最近我跟随tutorial在Swift中创建了框架,在那里他们创建了可重用的视觉效果视图,就像我们在Xcode构建成功弹出窗口中看到的那样。我正在逐步完成UI,他们创建了一个新的xib文件并将UIVisualEffectView
拖放到其中。
在上图中,我们可以看到UIVisualEffectView
不包含任何约束。它只在尺寸检查器中具有自动调整大小的蒙版(如预期的那样)。
但是教程中的以下图像突然包含了对其根视图的所有必要约束。
我已经知道我们不能默认设置根视图的任何约束。但在本教程中,作者似乎已经添加了相同的约束。我只是想知道是否有可能这样做或者我错过了任何基本想法?
修改
根视图的约束。
答案 0 :(得分:3)
好的,找到了一种方法来做到这一点......
Haven没有进行任何测试,因此我不确定约束是否真正设置正确或将在运行时自动布局使用,但这将是把它们放在那里。
创建一个新的" View" XIB - 这就是它的开始:
将视觉效果视图添加到此视图,并为其指定宽度和高度约束230/230:
现在,将Visual Effects视图*从普通视图拖到空白区域:
你会看到它保持其约束。然后删除原始视图,并添加其他元素:
答案 1 :(得分:2)
我不知道你的教程会发生什么(而且我无意观看),我不知道在什么情况下屏幕截图已经实现。但我确实知道视图控制器主视图的大小规则。
任何视图控制器的主视图都必须在放入界面时调整大小。因此,故事板中的大小无意义。这就是为什么你不能给它一个自动布局的大小。
如果要将 xib 或storyboard中的视图用作视图控制器的主视图,则设置约束是没有意义的(并且会是错误的)在它上面,因为它将是视图控制器的父的任务(或者,在窗口的rootViewController
窗口的情况下),在它放置时设置视图的大小它进入了等级。
如果视图控制器在将视图放入视图层次结构(例如,作为弹出窗口)时想要对其视图的大小进行投票,那么这就是内容大小(首选显式大小)的用途。但即便如此,父母也是控制实际情况的人。
答案 2 :(得分:1)