Xcode 9.3,运行OS 10.13.4的MacBook Pro
当我向IB中的UIView
添加长宽比约束时,该视图不会在模拟器中呈现。为了找出问题所在,我记录了没有约束的相关框架坐标,然后显示了。坐标看起来相同,但请参见屏幕截图以了解差异。
无限制:
self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)
仅具有宽高比限制:
self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)
如果您有任何想法,一定会感谢您的帮助!
这是IB中的场景快照。大UIImageView
是viewFinder
,小thumbView
:
这是不受限制的样子:
这是添加纵横比约束后的样子:
编辑1
根据下面@Anton的评论,我从viewFinder
的底部和侧面到thumbView
添加了接近限制。但是,这没有任何变化-我仍然得到表示thumbView
存在的坐标,但是它仍然不可见。
答案 0 :(得分:1)
简短的答案是:尝试在拇指视图上同时添加x
和y
位置的约束(例如,将其leading
和bottom
的边缘对齐到{{ 1}})。您可能会得到相同的帧,只是因为您在自动布局完成其工作之前进行了检查(例如,在viewFinder
中)。还要为该图像视图设置一些图像或为其中一个尺寸设置约束(没有这种约束,自动布局会尝试使用取决于viewDidLoad
内容的固有尺寸)。另外,在此之后,您必须检查“界面生成器”是否存在其他错误,导致它很可能需要对视图设置约束,因此您的UIImageView
取决于
如果您确实只对拇指视图具有一个约束及其宽高比约束,则可能会在界面生成器中遇到错误,该错误提示您必须为thumbView
和x
坐标设置约束该观点。没有这样的约束,您将获得一个模棱两可的布局,这意味着如何设置视图位置有许多变体。
尽管根本没有约束,但是系统将视图的y
和frame
转换为约束,以便您获得有效的约束集来设置视图的位置和大小,这就是视图可见的原因。由于您要向视图添加任何约束,因此应该添加足够的约束以通过这些约束清楚地定义该视图的位置和大小。