使用自动布局将图像和文本设置为按钮

时间:2018-10-11 16:06:15

标签: ios swift uibutton

我正在尝试以编程方式创建一个带有在文本右侧的下拉箭头的按钮,如下所示:

Dropdown button

我见过的解决方案已经使用了标题和图像插图,但是有没有办法通过autoLayout以编程方式设置它们?根据所选择的选项,按钮中的文本可能会更改,并且文本的长度会有所不同,因此我不确定标题和边缘插图是否可行。

2 个答案:

答案 0 :(得分:1)

否,无法使用AutoLayout在UIButton上设置图像和标题布局属性。

如果要在UIButton中为图像和标题提供完全自定义的布局,我建议创建一个UIView并添加一个title和一个image作为使用AutoLayout的子视图,然后将轻击手势识别器添加到UIView

buttonView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.buttonAction)))

答案 1 :(得分:1)

这是在VC主容器视图中放置public int makeChocolate(int small, int big, int goal) { int result = goal % 5; // means we need more little pieces if(result > 0){ if((small + big*5) >= goal){ if(goal-big*5 < 0){ if((goal % 5) > small){ return -1; } else{ return goal % 5; } }else{ return goal-big*5; } }else{ return -1; } } else{ if(big*5 + small < goal){ return -1; } if((goal - big*5) <= 0){ return 0; }else{ return goal - big*5; } } } 的示例(在我的情况下,UIStackView占据了VC内部的所有可用空间)。在这种情况下,将添加基本用户信息的电话号码。

我创建一个电话号码容器视图(UIStackView),其中一个UIView包含电话。没有。并使用UILabel表示下拉箭头。

UIImageView

let telNoContainerView: UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false return view }() let telNoLabel: UILabel = { let view = UILabel() let font = UIFont.systemFont(ofSize: 15) view.font = font view.backgroundColor = UIColor.white view.translatesAutoresizingMaskIntoConstraints = false return view }() let telNoImageView: UIImageView = { let view = UIImageView() view.backgroundColor = UIColor.white view.tintColor = ACTION_COLOR view.image = UIImage(named: "Chevron")?.withRenderingMode(.alwaysTemplate) view.translatesAutoresizingMaskIntoConstraints = false return view }() 中,只需将setBasicInfoViews()添加到他的telNoContainerView中。然后,将UIStackViewUILabel添加到包含视图UIImageView。之后,根据需要添加约束。 您将需要更改约束以适合您的UI设计。

telNoContainerView