gpt4 book ai didi

ios - 如何向放置在 UIStackView 中以编程方式创建的 UIButton 添加约束

转载 作者:行者123 更新时间:2023-11-30 12:56:01 32 4
gpt4 key购买 nike

我有一个简单的垂直UIStackView,在第三个 subview 中,我想放置以编程方式创建的UIButton。我可以做到这一点,但按钮会扩展到 subview 的完整宽度和高度,而不是我在代码中设置的大小。我已使用 Storyboard 创建了 UIStackView,但我以编程方式添加此按钮,以便更好地控制按钮的外观。

  let doThisButton = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 40))
doThisButton.setTitle("Let's do this.", forState: .Normal)
doThisButton.setTitleShadowColor(UIColor.blackColor(), forState: .Highlighted)
doThisButton.translatesAutoresizingMaskIntoConstraints = false
doThisButton.layer.cornerRadius = 3
doThisButton.layer.backgroundColor = UIColor(hexString: "b7b7b7").CGColor
doThisButton.layer.borderWidth = 0

liftLogStackView.addArrangedSubview(doThisButton)

在Apple的文档中,我发现UILayoutGuide看起来它可能有效,但现在我不这么认为。我试过这个:

  let container = UILayoutGuide()
doThisButton.addLayoutGuide(container)

doThisButton.leadingAnchor.constraintEqualToAnchor(container.leadingAnchor, constant: 8.0).active = true
doThisButton.trailingAnchor.constraintEqualToAnchor(container.trailingAnchor, constant: 8.0).active = true

liftLogStackView.addArrangedSubview(doThisButton)
container.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor).active = true

这没有什么区别。

很多搜索都没有找到针对我的问题的任何答案,所以我希望有人可以提供帮助。提前致谢。

最佳答案

另一个解决方案是将这个 UIButton 打包到 UIView 中。然后 UIView 将拉伸(stretch)并占据所有需要的位置。 UIButton 将保持您定义的大小。现在您可以根据容器 View 定义约束。

我做了一个简短的 Playground 示例:

import UIKit
import PlaygroundSupport

class TestViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

title = "Test"

self.view.frame = CGRect(x: 0, y: 0, width: 320, height: 480)
self.view.backgroundColor = UIColor.brown

let stackview = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
stackview.axis = .vertical
stackview.distribution = UIStackViewDistribution.fillEqually

let text = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 20))
text.text = "Hello, i am a label"
text.backgroundColor = UIColor.green

let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 100))
containerView.backgroundColor = UIColor.red
containerView.addSubview(text)

stackview.addArrangedSubview(containerView)

let text2 = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
text2.text = "Hello, i am another label"
text2.backgroundColor = UIColor.orange

stackview.addArrangedSubview(text2)

self.view.addSubview(stackview)
}
}

let testController = TestViewController()
PlaygroundPage.current.liveView = testController.view
testController

Storyboard Example

关于ios - 如何向放置在 UIStackView 中以编程方式创建的 UIButton 添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382193/

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