UIView transitionWithView:剪切我的UITextView

时间:2010-07-20 21:07:52

标签: iphone uiview uitextview transitions

我有一个禁用滚动的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

片刻之后,文字不再被剪裁。

任何想法如何防止剪辑?

3 个答案:

答案 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。这将使您的文本视图可用于在其边界之外绘制