我有一个UITextView
内部 a在构建 fromUIScrollView
上工作得非常好,但是现在用它构建不能正常工作,即使在.iOS 6
xcode 4.x
xcode 5
iOS 6
问题是文本以屏幕宽度换行,即使UITextView
和UIScrollView
具有较大的宽度。我使用这段代码来计算新的宽度和高度UITextView
,即使 textview 向左/向右滚动,文本也会被换行,就好像宽度只是屏幕的宽度一样。
谢谢
self.responceTextView.text = [NSString stringWithFormat:@"%@%@",_responceTextView.text,responce];
[self textViewDidChange:self.responceTextView];
- (void)textViewDidChange:(UITextView *)textView
{
// Recalculate size of text field
CGSize maxSize = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGSize reqSize = [textView.text sizeWithFont:[UIFont fontWithName:@"Courier" size:12] constrainedToSize:maxSize lineBreakMode:NSLineBreakByClipping];
self.responceTextView.frame = CGRectMake(0, 0, reqSize.width+16, reqSize.height+16);
// Resize scroll view if needs to be smaller so text stays at top of screen
CGFloat maxScrollHeight = maxScrollViewSize.size.height;
if (self.responceTextView.frame.size.height < maxScrollHeight) {
self.responceScrollView.frame = CGRectMake(self.responceScrollView.frame.origin.x, self.responceScrollView.frame.origin.y, self.responceScrollView.frame.size.width, self.responceTextView.frame.size.height);
} else {
self.responceScrollView.frame = maxScrollViewSize;
}
// Set content size
self.responceScrollView.contentSize = CGSizeMake(self.responceTextView.frame.size.width, self.responceTextView.frame.size.height);
[self scrollToCursor];
}
编辑 - -
好的,所以它似乎sizeWithFont
在 iOS 7 中已被弃用。奇怪的是我如何没有收到编译器警告。它在 iOS 6 上不起作用仍然没有意义(或者在使用 iOS 7 SDK 构建时它完全删除了?)
我已经尝试了这两种替代方案,但得到的尺寸完全相同。
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Courier" size:12], NSFontAttributeName,
nil];
CGRect rect = [textView.text boundingRectWithSize:maxSize options:NSLineBreakByClipping | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attributes context:nil];
返回:{{0, 0}, {439.27148, 168}}
CGSize rect2 = [textView.text sizeWithAttributes:attributes];
返回:{439.27148, 168}
上面的原始返回{439.27148, 168}
他们都应该返回更广阔的视野。
编辑 2 ---- 从上面看来,返回的框架是正确的(439 宽),但是它的文本仍然被文字包裹在 textview 中。