【发布时间】:2017-08-07 12:59:51
【问题描述】:
我有一个 UITextView 将其内容定位在错误的位置。我一输入文字,文字就变得不可见,然后很快就跳到正确的位置(几乎正确的位置,比我预期的略低)。
查看调试时,我可以看到 _UITextContainerView 的位置错误。
奇怪的是,当我将 NavigationBar 外观设置为 NO 时, 一切都按预期工作,完全没有问题。
UINavigationBar.appearance.translucent = YES;
我必须设置我的 mainView 的边界,否则它不会低于 “导航栏”
if (self.navigationController.navigationBar.isTranslucent) {
[[self view] addConstraint:[NSLayoutConstraint constraintWithItem:_mainView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:64]];
} else {
[[self view] addConstraint:[NSLayoutConstraint constraintWithItem:_mainView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0]];
}
Text输入后,_UITextContainerView向下移动,可以看到 “_UITextContainerView”视图中间的光标,一个很小的 更垂直的矩形。
刚刚找到更多信息,可能与我的问题有关, 我的边界与框架不匹配。仍然不知道如何解决这个问题。 我认为这是相关的,从 4 到 -56 = 60 的距离,高度 导航栏。
再次提供更多信息:
我在TextField上设置了字体大小,并在减小字体大小后 我注意到不同的结果,如图所示。
通过关闭半透明进行了测试,所有(0,1,2,3 个字符)在减小字体大小的情况下都很完美。
字体更改结果见图片:
_textField = [UITextView new];
_textField.bounds = CGRectZero;
_textField.backgroundColor = [UIColor whiteColor];
_textField.layer.cornerRadius = 16;
_textField.layer.borderWidth = 0.5;
_textField.font = [UIFont systemFontOfSize:17.0]; //<< problematic???
【问题讨论】:
-
你为什么使用
self.view作为superview和toitem:self.view。但是你的设计看起来像是有UITextViewsuperview 而不是self.view。也许这个问题是由约束发生的。删除“UITextView”的滚动启用。 (仅供参考) -
mainView 在 self.view 里面,StoryBoard 给你的那个。我的 UITextView 没有滚动。
标签: ios objective-c