There is a weird problem, if you create a UITextView
and rotate it right after creating it, some lines or characters will not be visible! Try this:
myTextView.font = UIFont.boldSystemFontOfSize(20)
myTextView.text = "Hello world wht the hell\nhello mrs lorem ipum!"
let maxsize = CGSizeMake(700, 700)
let frame = myTextView.sizeThatFits(maxsize)
myTextView.frame = CGRectMake(200, 200, frame.width, frame.height)
view.addSubview(myTextView)
myTextView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
Result:
You see? most of is lost! But if you remove myTextView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
and run it through a button it's fine:
You can view the code on git: https://github.com/maysamsh/rotateTextView
As a workaround, try to set your UITextView
in another simple UIView
, and then rotate this UIView
.
It should help because this way, UITextView
should react like it's not rotated (so you can set it with inset constraints to superview)
Then you just have to care about the form of the superview.
Other solution
myTextView.font = UIFont.boldSystemFontOfSize(20)
myTextView.text = "Hello world wht the hell\nhello mrs lorem ipum!"
let maxsize = CGSizeMake(700, 700)
let frame = myTextView.sizeThatFits(maxsize)
myTextView.frame = CGRectMake(200, 200, frame.width, frame.height)
view.addSubview(myTextView)
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
myTextView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
}
A bit dirty, but should work, the user might see a small clipping, but mostly he shouldn't even see it.