我正在尝试以编程方式创建一个带有在文本右侧的下拉箭头的按钮,如下所示:
我见过的解决方案已经使用了标题和图像插图,但是有没有办法通过autoLayout以编程方式设置它们?根据所选择的选项,按钮中的文本可能会更改,并且文本的长度会有所不同,因此我不确定标题和边缘插图是否可行。
答案 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
中。然后,将UIStackView
和UILabel
添加到包含视图UIImageView
。之后,根据需要添加约束。
您将需要更改约束以适合您的UI设计。
telNoContainerView