【发布时间】:2016-04-27 00:35:57
【问题描述】:
我正在尝试构建一个具有自定义外观的操作表。我认为最简单的方法是将视图创建为子视图并将子视图顶部的约束分配给超级视图的底部。同时指定一个不透明的封面视图。因此,我可以有不同版本的子视图,我可以初始化必要的子视图并滑动它。
我找不到任何对 Swift 有用的东西,因此,我尝试使用 this obj-c answer 将其转换为 Swift。我用这个实现了不透明的背景,但是翻译约束似乎不起作用。
var coverView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
coverView.backgroundColor = UIColor(white: 0.0, alpha: 0.4)
coverView.alpha = 1.0
self.view.addSubview(coverView)
self.view.bringSubviewToFront(coverView)
}
//doesn't work
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[coverView]|", options: kNilOptions, metrics: nil, views: NSDictionaryOfVariableBindings(coverView)))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[coverView]|", options: kNilOptions, metrics: nil, views: NSDictionaryOfVariableBindings(coverView)))
我对实例化视图和应用过渡动画感到困惑。如果我选择在 ViewController 下创建 UIView,我无法调整约束将子视图的equal width 调整为父视图。
如何使用我创建的 UIView 作为子视图(在 Storyboard 中),然后调整其宽度约束以使 UI 不会出错?另外,如何应用过渡动画使其看起来很自然?
【问题讨论】:
-
几年前我写过类似的东西。 github.com/MosheBerman/MBMenuController
-
@EICaptain 您的示例是有道理的,但是,我不希望它显示在我的超级 UIView 上,而是希望它在超级视图(底部下方)下形成,然后滑动它。 . 如何使用约束?我应该尝试获取超级视图的高度,然后放置 UIView 的原点 y 吗?如果您有时间,我将非常感谢您的答复
-
@Moshe 你是一个动作控制器,不是吗?我不会有自定义视图
-
如果您要添加约束,请确保在您的coverView 中设置
translatesAutoSizingMaskIntoConstraints=false -
@senty - 我的是 UIView 子类。它是预自动布局,但它应该与自动布局一起使用。
标签: ios swift uiview storyboard viewcontroller