我有一个禁用滚动的UITextView,我正在使用页面卷曲转换来更改里面的文本。这是我正在使用的代码:
myView.text = nextString;
[UIView transitionWithView:myView duration:PAGE_CURL_DURATION options:UIViewAnimationOptionTransitionCurlDown animations:nil completion:nil];
一切正常,除非新文本字符串的行数多于旧文本字符串,否则它将被剪裁直到动画完成。看起来好像在动画之后contentSize正在改变。我尝试添加myView.contentSize = myView.bounds.size;
,但这并未改变任何内容。我也关闭了“剪辑子视图”无济于事。
这就是动画后立即看起来的样子: alt text http://i26.tinypic.com/21ahi0o.png
片刻之后,文字不再被剪裁。
任何想法如何防止剪辑?
答案 0 :(得分:2)
简单的方法是做Bjarne所说的 - 使用clipsToBounds属性。但请注意 - 这将使文本无限期地向下扩展。因此,您还需要使用容器视图环绕文本字段,该视图将剪切到边界以设置上限。
如果不能解决这个问题,你必须做一些工作来手动扩展文本视图的边界,并在动画制作之前重新定位它,如果新文本更大的话。
要获取文本的大小,请查看UIKit框架中的UIStringDrawing.h。具体来说,我正在考虑使用: - (CGSize)sizeWithFont :( UIFont *)字体forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode; 与UILineBreakModeWordWrap一起使用。
获取大小的另一种方法可能是UILabel中的此功能: - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines; 并传入最大可能的文本视图的边界。
为了获得额外的功劳,您可能还需要考虑为视图的边界设置更改动画,以实现更平滑的过渡。
答案 1 :(得分:0)
答案 2 :(得分:0)
解决问题的最简单方法是将UITextView的属性“clipsToBounds”设置为NO。这将使您的文本视图可用于在其边界之外绘制