我有一个 UITextView,里面有一些文本。在 iOS6中一切都很好,但是现在在 iOS7中,它在顶部留下了空白,然后将文本放置在文本视图的中间。
我没有设置任何内容。 救命啊!
文本视图是滚动视图。视图控制器将自动为滚动视图添加内容偏移量,因为假定它们想要在导航栏和状态栏后面向上滚动。
若要防止这种情况,请在包含文本视图的视图控制器上设置以下属性:
self.automaticallyAdjustsScrollViewInsets = NO
我真的想知道这是否是一个真正的功能... 这64点自动插入只有当 UIScrollView或 UITextView作为视图控制器的视图的所有子视图的更大深度时才添加。例如,如果你在滚动视图后面添加一个视图(这里我说的是 z-buffer,而不是 view imbrication) ,这个64点的插入不会自动添加。
UIScrollView
UITextView
例如,这个插图添加了:
在这种情况下,不添加插入:
这对我来说真的很奇怪... 为什么操作系统要看视图的深度来决定是否应该扩展视图?
在 Interface Builder 里,
IronManGill 给出的当前答案不是一个好的解决方案,因为它不是基于对问题发生的原因的理解。
Jrturton 的答案也不是最干净的解决方法。你不需要覆盖。保持简单!
您只需要设置以下内容:
self.automaticallyAdjustsScrollViewInsets = NO;
in the viewDidLoad method.
看看这些文件: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
这是一个不专业的解决方案,我确信... 但只要在文本视图后面加上一个空白标签就可以解决问题。
这对我来说很有用(可以从 iOS7中获得)
[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];
关于迅捷(Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
您可以删除 UITextView顶部的空格,添加:
yourTextView.textContainerInset = UIEdgeInsetsZero;
This worked for me
textView.textContainerInset = UIEdgeInsetsZero; textView.textContainer.lineFragmentPadding = 0;
I resolved this issue by setting content offset to a negative value. Here is Swift code.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
Go to Interface Builder:
Interface Builder
text view
view controller
Adjusts Scroll View Insets
你需要理解的是,这与导航栏有关:
我试了下面的方法,成功了。
- (void)viewDidLoad{ self.textView.scrollEnabled = NO; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.textView.scrollEnabled = YES; }
Swift 4的解决方案:
textView.textContainerInset = UIEdgeInsets.zero