首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addArrangedSubview对addSubview

addArrangedSubview对addSubview
EN

Stack Overflow用户
提问于 2019-03-18 12:44:37
回答 1查看 8.5K关注 0票数 11

我是新手,我编写了一个继承自StackViewStackView,并以编程方式创建了一个很少有属性的button,当我将它添加到我的自定义视图中时,我有两个问题:

  1. 如果我使用addArrangedSubview(myBtn),我的视图将忽略我添加的属性并填充整个宽度。但是如果我使用addSubView(myBtn),就可以了(在44x44中是一个蓝色方格)。
  2. 如果我使用addArrangedSubview(myBtn)addTarget()不起作用,myBtn也不能点击,但是当我使用addSubView(myBtn)时,它工作得很好。

以下是我的自定义视图类:

代码语言:javascript
复制
import UIKit

class RatingControl: UIStackView {

//MARK: Initialization
override init(frame: CGRect) {
    super.init(frame: frame)
    setupButtons()
}

required init(coder: NSCoder) {
    super.init(coder:coder)
    setupButtons()
}

//MARK: Private Methods
private func setupButtons() {

    // Create the button
    let button = UIButton()
    button.backgroundColor = UIColor.blue

    // Add constraints
    button.translatesAutoresizingMaskIntoConstraints = false
    button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
    button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true

    // Setup the button action
    button.addTarget(self, action: #selector(ratingButtonTapped(_:)), for: .touchUpInside)

    // Add the button to the stack
    addArrangedSubview(button)

}
//MARK: Button Action
@objc func ratingButtonTapped(_ sender: Any) {
    print("Button pressed ")
}

}

以下是预览:

addSubView()addArrangedSubview()有什么区别?为什么会出现这些问题?

EN

回答 1

Stack Overflow用户

发布于 2019-03-18 13:15:52

我假设您想要水平地添加几个按钮(例如使用典型的“星星”评级控件)。

UIStackView.addArrangedSubview()方法可以猜到,根据其.axis.alignment.distribution.spacing属性以及frame排列的子视图。

因此,阅读一些关于UIStackView以及如何使用它的文章。最有可能的是,您目前正在用以下方法约束您的自定义视图:

  • 顶部
  • 先导
  • 尾随(或宽度)

因此,将按钮作为arrangedSubView添加将导致它延伸到堆栈视图的宽度,因为这是默认的。

将其添加为subview只会覆盖堆栈视图上的按钮,而不是允许堆栈视图对其进行排列,您的堆栈视图的高度可能为零--因此不能点击该按钮。

添加自定义堆栈视图时,尝试只设置顶部和前导约束。这应该会给你一个可以点击的44 x 44按钮。

当您使用.addArrangedSubview()添加更多的按钮时,这些按钮将被水平排列,这可能是您想要的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55221703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档