【发布时间】:2014-11-12 08:27:01
【问题描述】:
我需要在视图中定位子视图垂直对齐中间,而无需以编程方式使用约束对顶部值 150 进行硬编码。我希望实现以下目标:
以下是我目前的代码,请指教。
import UIKit
class MainViewController: UIViewController {
var viewInner:UIView = UIView()
var viewOuter:UIView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
viewInner.backgroundColor = UIColor.redColor()
viewOuter.backgroundColor = UIColor.purpleColor()
viewOuter.frame = CGRectMake(100, 100, 400, 400)
viewInner.setTranslatesAutoresizingMaskIntoConstraints(false)
let viewsDictionary = ["viewInner":viewInner]
viewOuter.addSubview(viewInner)
self.view.addSubview(viewOuter)
//Add Constraint
var constOuterH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-10-[viewInner(>=200)]-10-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
var constOuterV = NSLayoutConstraint.constraintsWithVisualFormat("V:|-150-[viewInner(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
viewOuter.addConstraints(constOuterH)
viewOuter.addConstraints(constOuterV)
}
}
【问题讨论】:
-
如果你想让它居中但总是让顶部有一个固定的偏移量,你真的只是想要一个固定的顶部和底部值而不是真正的居中对齐吗?
-
我希望 viewInner 的高度始终为 100px,viewOuter 的高度可以更改为任何值。不需要固定顶部。
-
viewInner.frame = CGRectMake(0, 0, viewOuter.frame.size.width - 20, 100); viewInner.center = CGPointMake(200, 200);并删除 constOuterH 和 constOuterV。
-
如果中心总是固定的,什么会导致这个视图的大小发生变化?
-
@Acey 似乎 kaneyip 想要为外部视图高度设置动画,但保持 innerView 始终以外部视图为中心。也许他正在尝试创建一个登录表单? :)
标签: ios uiview autolayout subview