如何在Swift 3中自定义按钮大小?

4

我想把一个按钮调整为正方形,这是我的代码:

    let button = UIButton()
    button.backgroundColor = UIColor.red

    button.translatesAutoresizingMaskIntoConstraints = false

    //method one 
    //button.widthAnchor.constraint(equalToConstant:44.0).isActive = true
    //button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
    //method two
    button.frame.size = CGSize(width: 20.0, height: 20.0)

    button.addTarget(self, action: #selector(ratingButtonTapped(button: )), for: .touchUpInside)
    addArrangedSubview(button)

我尝试了两种方法,但似乎都无法正常工作。在第一种方法中出现了错误,而在第二种方法中没有显示任何内容。当我运行代码时,按钮会出现在容器中。这里有什么问题?

也许您有一些限制,使按钮的大小保持原样? - Whencesoever
你遇到了什么错误?同时尝试设置约束条件。 - Inder Kumar Rathore
如果我使用Storyboard,也就是直接从库中将按钮拖到Storyboard上,我可以很方便地设置约束条件。但现在我正在通过编程创建一个按钮。你知道的,问题是我现在无法轻松地更改按钮的大小。 - chucklai
addArrangedSubview函数内部你做了什么?只有view.addSubview(button)吗? - Christian Ascone
2个回答

6

请使用addSubview()代替addArrangedSubview()。

我在评论中发布了相同的解决方案,这里写下playground代码以备有需要的人查看:

Swift 3.0:

//: Playground - noun: a place where people can play

import UIKit
import PlaygroundSupport

let view = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 400))

view.backgroundColor = UIColor.blue

let button = UIButton()
button.backgroundColor = UIColor.red
button.frame.size = CGSize(width: 40.0, height: 20.0)
button.translatesAutoresizingMaskIntoConstraints = false

view.addSubview(button) // This does the trick

PlaygroundPage.current.liveView = view

-2
为什么不创建按钮并用给定的尺寸进行初始化呢?
let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))

然后相应地更改x和y的值


我已经尝试了你的建议,但它仍然不起作用。我认为代码没问题。一定有更严重的错误导致了这个问题。 - chucklai
请提供您所得到的结果截图。 - Saheb Roy
请添加一个背景颜色,以便我们可以看到按钮。 - Saheb Roy
[LayoutConstraints] 无法同时满足约束条件。可能以下列表中的至少一个约束条件不是您想要的。请尝试:(1)查看每个约束条件,尝试找出您不希望的约束条件;(2)找到添加了不需要的约束条件的代码并进行修复。 - chucklai
那么您已经对该按钮添加了限制条件,请尝试创建另一个具有不同名称的按钮。 - Saheb Roy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接