【发布时间】:2018-07-25 14:09:34
【问题描述】:
我正在尝试创建一个内部包含三个 UIView 的 UIStackView。 UIView 将有一个圆圈,其中 / 上有文字。
我不想将 StackView 设置为静态数字,我希望它能够根据用户使用的设备变得更小/增长。
现在,StackView 正在添加到视图中,并且 UIViews 正在添加到其中。正在显示颜色,但不显示圆角,并且 StackView 高度不等于 leftui 的宽度。
基本上,我需要三个高度和宽度相等的圆圈......有没有更好的方法?
这是我的代码。
@IBOutlet var stack: UIStackView!
override func viewWillLayoutSubviews() {
//let stack = UIStackView()
let leftui = UIView()
let middleui = UIView()
let rightui = UIView()
stack.addArrangedSubview(leftui)
stack.addArrangedSubview(middleui)
stack.addArrangedSubview(rightui)
leftui.backgroundColor = UIColor.red
middleui.backgroundColor = UIColor.blue
rightui.backgroundColor = UIColor.brown
leftui.bounds.size.height = leftui.bounds.width //needs these to new equal
middleui.bounds.size.height = middleui.bounds.width //needs these to new equal
rightui.bounds.size.height = rightui.bounds.width //needs these to new equal
leftui.layer.cornerRadius = leftui.bounds.size.width / 2
middleui.layer.cornerRadius = middleui.bounds.size.width / 2
rightui.layer.cornerRadius = rightui.bounds.size.width / 2
print(leftui.bounds.size.width) //prints 0.0
leftui.clipsToBounds = true
middleui.clipsToBounds = true
rightui.clipsToBounds = true
stack.sizeToFit()
stack.layoutIfNeeded()
view.addSubview(stack)
}
这就是我要找的。 这是来自应用程序的 android 版本。
【问题讨论】:
-
您可以让您的堆栈视图根据其内容元素大小来工作。所以不需要固定堆栈视图的大小,但你必须为其内部元素提供适当的框架,即堆栈视图内的视图。
-
那么将UIView的高度设置为UIView的宽度?如果这就是你的意思,那是有道理的,我正在尝试这样做,但 leftui.bounds.width 返回 0.0 而不是实际大小。
-
你在哪里设置leftui的框架?
-
你知道你希望圆圈有多大吗?
-
@DroiDev - 首先,您应该使用约束和自动布局。其次,展示您希望它的外观的图像 - 纵向和横向方向。