【发布时间】:2014-10-16 14:23:24
【问题描述】:
我的 UIView 在视图控制器的中间,我正在设置排除路径如下
-(void) viewDidLayoutSubviews
{
UIBezierPath *exludedPath = [UIBezierPath bezierPathWithRect:aRect];
self.textView.textContainer.exclusionPaths = @[excludedPath];
}
这里 aRect 与 UITextView 具有相同的 x 和 y 以及合理的高度和宽度
当我的 UITextView 位于视图控制器的顶部时,此代码确实有效,但当它位于视图控制器中间的某个位置时则无效。
是 viewController 的生命周期问题吗?还是导致这种情况的视图控制器的某些属性?
【问题讨论】:
-
为了帮助回答这个问题,您应该为
aRect和textView.frame提供调试值。您能否提供显示不正确文本流的图像?一个小问题:textView在父 UIView 中,而不是在 UIViewController 中。 UIViewController 不是可见对象。它在布局中没有尺寸,所以中间不能有任何东西。 -
快速尝试:因为
NSTextContainer是关于布局的,可能会将您的代码移动到viewWillLayoutSubviews。布局应在调用viewDidLayoutSubviews时完成。也许当textView位于其父视图的顶部时,它只是因为巧合而看起来正确,但您的代码永远不会产生效果,因为它是在视图布局结束后调用的。
标签: ios ios7 uitextview uibezierpath