gpt4 book ai didi

ios - 使用编程约束在 View 中创建 2 个 View

转载 作者:行者123 更新时间:2023-11-28 08:54:51 24 4
gpt4 key购买 nike

我正在尝试向 CallOutView 添加 2 个 View 。 pushButton 应该位于底部,静态高度为 20。然后 topView 应该填充其余部分。我尝试使用 SnapKit 以编程方式执行此操作.然而,似乎按钮只是填满了一切?我做错了什么?

       callOutView = UIView(frame: CGRectMake(-70+(self.frame.width/2), -65, 140, 60))
callOutView!.backgroundColor = UIColor.clearColor()
callOutView?.clipsToBounds = true
callOutView?.layer.cornerRadius = 6
self.addSubview(callOutView!)

let topView = UIView()
topView.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.8)
callOutView?.addSubview(topView)


let pushButton = UIButton()
pushButton.backgroundColor = UIColor(rgba: "#09316e").colorWithAlphaComponent(0.8)
pushButton.setTitle("Se Mere", forState: UIControlState.Normal)
pushButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
pushButton.titleLabel?.font = UIFont.systemFontOfSize(8)
callOutView?.addSubview(pushButton)

topView.snp_makeConstraints { (make) -> Void in
make.top.equalTo(callOutView!).offset(0)
make.left.equalTo(callOutView!).offset(0)
make.bottom.equalTo(pushButton).offset(0)
make.right.equalTo(callOutView!).offset(0)
make.height.equalTo(40)

}

pushButton.snp_makeConstraints { (make) -> Void in
make.height.equalTo(20)
make.top.equalTo(topView).offset(0)
make.left.equalTo(callOutView!).offset(0)
make.bottom.equalTo(0).offset(0)
make.right.equalTo(callOutView!).offset(0)

}

最佳答案

问题是有些约束相互冲突,这会使自动布局系统破坏其中的一些约束。

topView.snp_makeConstraints { (make) -> Void in
...
make.bottom.equalTo(pushButton).offset(0)
...
}


pushButton.snp_makeConstraints { (make) -> Void in
...
make.top.equalTo(topView).offset(0)
...
}

上面的两个约束告诉自动布局系统:

  1. 放置 topViewpushButton 并使上边缘对齐。
  2. 放置 topViewpushButton,底部边缘对齐。

如果您给 topViewpushButton 不同的高度,这是不可能的。

此外,这显然不是您想要的。您想要的是“将pushButton 放在topView 的正下方”

下面是使 pushButton 位于 topView 正下方的修改代码:

topView.snp_makeConstraints { (make) -> Void in
...
make.bottom.equalTo(pushButton.snp_top).offset(0)
...
}


pushButton.snp_makeConstraints { (make) -> Void in
...
make.top.equalTo(topView.snp_bottom).offset(0)
...
}

关于ios - 使用编程约束在 View 中创建 2 个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com