Swift - UIButton 以编程方式设置约束
Posted
技术标签:
【中文标题】Swift - UIButton 以编程方式设置约束【英文标题】:Swift - UIButton setting constraints programmatically 【发布时间】:2019-11-22 18:51:37 【问题描述】:我在为UIButton
设置height
和width
constraints
时遇到问题。我不知道为什么这段代码不起作用:
let wishButton: UIButton =
let v = UIButton()
v.setImage(UIImage(named: "wishButton"), for: .normal)
v.translatesAutoresizingMaskIntoConstraints = false
v.addTarget(self, action: #selector(wishButtonTapped), for: .touchUpInside)
return v
()
这些是我的限制:
wishButton.centerXAnchor.constraint(equalTo: popUpView.centerXAnchor).isActive = true
wishButton.centerYAnchor.constraint(equalTo: popUpView.centerYAnchor, constant: 150).isActive = true
wishButton.heightAnchor.constraint(equalToConstant: 100).isActive = true
wishButton.widthAnchor.constraint(equalToConstant: 100).isActive = true
现在是这样的:
这很奇怪,因为其他两个 constraints
工作正常。可能只是一个愚蠢的错误,但我很新,感谢每一个帮助:)
【问题讨论】:
您能分享一下您的按钮当前外观的屏幕截图吗?另外,设置 v.clipsToBounds=true @KeshuRai 刚刚编辑了我的问题 :) 按钮是黑色方块,整个是wishButton
图像,还是里面有按钮的视图?如果您可以显示如何添加约束/呈现按钮的代码,这也会有所帮助。
【参考方案1】:
约束没有问题。问题在于图像。您的图像不够大,无法填满框架。您可以设置按钮的.setBackgroundImage
,使其自动伸缩。
v.setBackgroundImage(UIImage(named: "wishButton"), for: .normal)
或者您可以使 content Alignment 在两个方向上都等于 .fill
。
【讨论】:
你说得对,这就是问题所在 :) @Ashmet Bhui 也说了,谢谢你们!【参考方案2】:我注意到的一件事是您似乎没有设置按钮的框架。
在初始化按钮后尝试添加这一行:
v.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
我不确定是否需要,但如果您的按钮根本没有显示,这可能会解决问题
【讨论】:
我看到您发布了一张图片...哪个对象是看起来不正确的按钮?想要的外观是什么? 底部的圆圈。我只是想改变它的大小【参考方案3】:将此添加到您的 UIButton 初始化中,它将起作用
v.contentVerticalAlignment = .fill
v.contentHorizontalAlignment = .fill
它将缩放您的图像。
let wishButton: UIButton =
let v = UIButton()
v.setImage(UIImage(named: "wishButton"), for: .normal)
v.translatesAutoresizingMaskIntoConstraints = false
v.contentVerticalAlignment = .fill
v.contentHorizontalAlignment = .fill
v.addTarget(self, action: #selector(wishButtonTapped), for: .touchUpInside)
return v
()
【讨论】:
就是这样 :) 非常感谢!以上是关于Swift - UIButton 以编程方式设置约束的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 UIButton 居中到 Superview 类(Swift 3)
在 Swift 中以编程方式更改 UIButton 的文本(填充)
如何在 Swift 中以编程方式更改 UIButton 状态
如何在 Swift 中以编程方式调整 UIButton 中文本的字体大小以适应宽度?
Swift:以编程方式在 UICollectionViewCell 中的 IndexPath 中的多个 UIButton,下一个 addTarget 不单击