代码之家  ›  专栏  ›  技术社区  ›  Kenny Winker

UIView转换WithView:剪裁我的UITextView

  •  2
  • Kenny Winker  · 技术社区  · 14 年前

    我有一个禁用滚动的UITextView,我正在使用page curl转换来更改其中的文本。这是我使用的代码:

    myView.text = nextString;
    
    [UIView transitionWithView:myView duration:PAGE_CURL_DURATION options:UIViewAnimationOptionTransitionCurlDown animations:nil completion:nil];
    

    myView.contentSize = myView.bounds.size; 但这并没有改变什么。我也关闭了“剪辑子视图”没有用。

    alt text

    过了一会儿,这段文字就不再剪辑了。

    你知道怎么防止剪吗?

    3 回复  |  直到 5 年前
        1
  •  2
  •   Rolf Hendriks    14 年前

    简单的方法是按照比亚恩说的做——使用clipsToBounds属性。但请注意-这将使文本无限向下扩展。因此,您还需要用一个容器视图将文本字段包围起来,该容器视图会剪裁到边界以设置上限。

    要获得文本的大小,请查看UIKit框架中的UIStringDrawing.h。具体来说,我想使用: 以及UILineBreakModeWordWrap。

    -(CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines; 并在可能的最大文本视图的范围内传递。

    为了获得额外的积分,您可能还需要考虑设置视图边界更改的动画,以获得更平滑的过渡。

        2
  •  0
  •   mvds    14 年前

    这很奇怪。这个 contentSize

    一些选项:

    我想你的 UITextView.frame [self performSelector(continueWithStuff:) withObject:object afterDelay:0.01] 创造奇迹吧,因为在动画确定初始状态之前,您为UI提供了实现更改所需的时间。

    但到目前为止,最简单的解决方法是在每一个文本中添加一堆新行。既然你没有滚动无论如何这应该不是一个问题。

    另一个角度可能是嵌入 UITextView 在一个 UIView view 容器视图

        3
  •  0
  •   Bjarne Mogstad    14 年前

    解决问题的最简单方法是将UITextView的属性“clipsToBounds”设置为NO。这将使文本视图可以在其边界之外绘制