Ios 如何创建右侧带有图标的按钮?

Ios 如何创建右侧带有图标的按钮?,ios,interface-builder,Ios,Interface Builder,我试图把一个图标旁边的按钮标签 问题:Interface Builder将按钮图像放置在右侧。所以在(x)旁边还有一些空间 谢谢你的帮助 您可以在Interface Builder中通过设置标题和图像插入来执行此操作: 在本例中,我将标题右侧插入设置为30,将图像左侧插入设置为80。通过设置ui按钮的imageEdgeInset和titleEdgeInset属性,可以在代码中实现同样的效果。了解UIButton子视图的大小后,您可能可以使用以下方法计算边插入: CGSize labelWidt

我试图把一个图标旁边的按钮标签

问题:Interface Builder将按钮图像放置在右侧。所以在(x)旁边还有一些空间

谢谢你的帮助


您可以在Interface Builder中通过设置标题和图像插入来执行此操作:

在本例中,我将标题右侧插入设置为30,将图像左侧插入设置为80。通过设置
ui按钮的
imageEdgeInset
titleEdgeInset
属性,可以在代码中实现同样的效果。了解UIButton子视图的大小后,您可能可以使用以下方法计算边插入:

CGSize labelWidth = myButton.titleLabel.frame.size.width;
CGSize imageWidth = myButton.imageView.frame.size.width;
myButton.titleEdgeInsets = (UIEdgeInsets){0.0, -imageWidth, 0.0, imageWidth};
myButton.imageEdgeInsets = (UIEdgeInsets){0.0, labelWidth, 0.0, -labelWidth};

通过设置标题和图像插入,可以在Interface Builder中执行此操作:

在本例中,我将标题右侧插入设置为30,将图像左侧插入设置为80。通过设置
ui按钮的
imageEdgeInset
titleEdgeInset
属性,可以在代码中实现同样的效果。了解UIButton子视图的大小后,您可能可以使用以下方法计算边插入:

CGSize labelWidth = myButton.titleLabel.frame.size.width;
CGSize imageWidth = myButton.imageView.frame.size.width;
myButton.titleEdgeInsets = (UIEdgeInsets){0.0, -imageWidth, 0.0, imageWidth};
myButton.imageEdgeInsets = (UIEdgeInsets){0.0, labelWidth, 0.0, -labelWidth};

在窗口上选择图像(如果(x)是图像)或标题(如果(x)是简单的键),并根据需要设置左右偏移量


在窗口上选择图像(如果(x)是图像)或标题(如果(x)是简单的键),并根据需要设置左右偏移量

在Xcode 8中,您将在大小检查器中找到这些属性:


在Xcode 8中,您将在尺寸检查器中找到这些属性:

我已经做到了这一点:

class自定义按钮:ui按钮{
打开右图标:UIImage{
迪塞特{
rightIconImage=UIImageView(图像:rightIcon?.withRenderingMode(.alwaysTemplate))
rightIconImage?.tintColor=.white
如果让rightIconImage=rightIconImage{
添加子视图(右图标图像)
}
布局子视图()
}
}
打开覆盖函数布局子视图(){
super.layoutSubviews()
SetupRightIConifRequired()
}
func setupRightIConifRequired(){
如果让rightIconImage=rightIconImage{
rightIconImage.translatesAutoResizengMaskintoConstraints=false
titleLabel?.translatesAutoresizingMaskIntoConstraints=false
如果让titleLabel=titleLabel,则titleLabel.frame.width>0{
让paddingLeft=(frame.width-titleLabel.frame.width-space-iconSize)/2
NSLayoutConstraint.deactivate(约束)
NSLayoutConstraint.deactivate(标题标签约束)
NSLayoutConstraint.activate([
//设置按钮的高度约束
heightAnchor.constraint(相等常量:大小.height),
//设置标题标签的约束
titleLabel.widthAnchor.constraint(相等常量:titleLabel.frame.width),
titleLabel.heightAnchor.constraint(相等常量:titleLabel.frame.height),
标题标签.中心约束(等于:中心约束),
titleLabel.leadingAnchor.constraint(等式:leadingAnchor,常量:paddingLeft),
//设置右图标的约束
rightIconImage.leadingAnchor.constraint(等式:titleLabel.trailingAnchor,常量:间距),
rightIconImage.centerYAnchor.constraint(等于:标题栏.centerYAnchor),
rightIconImage.widthAnchor.constraint(equalToConstant:iconSize),
rightIconImage.heightAnchor.constraint(equalToConstant:iconSize)
])
}
}
}
}
我已经做到了这一点:

class自定义按钮:ui按钮{
打开右图标:UIImage{
迪塞特{
rightIconImage=UIImageView(图像:rightIcon?.withRenderingMode(.alwaysTemplate))
rightIconImage?.tintColor=.white
如果让rightIconImage=rightIconImage{
添加子视图(右图标图像)
}
布局子视图()
}
}
打开覆盖函数布局子视图(){
super.layoutSubviews()
SetupRightIConifRequired()
}
func setupRightIConifRequired(){
如果让rightIconImage=rightIconImage{
rightIconImage.translatesAutoResizengMaskintoConstraints=false
titleLabel?.translatesAutoresizingMaskIntoConstraints=false
如果让titleLabel=titleLabel,则titleLabel.frame.width>0{
让paddingLeft=(frame.width-titleLabel.frame.width-space-iconSize)/2
NSLayoutConstraint.deactivate(约束)
NSLayoutConstraint.deactivate(标题标签约束)
NSLayoutConstraint.activate([
//设置按钮的高度约束
heightAnchor.constraint(相等常量:大小.height),
//设置标题标签的约束
titleLabel.widthAnchor.constraint(相等常量:titleLabel.frame.width),
titleLabel.heightAnchor.constraint(相等常量:titleLabel.frame.height),
标题标签.中心约束(等于:中心约束),
titleLabel.leadingAnchor.constraint(等式:leadingAnchor,常量:paddingLeft),
//设置右图标的约束
rightIconImage.leadingAnchor.constraint(等式:titleLabel.trailingAnchor,常量:间距),
rightIconImage.centerYAnchor.constraint(等于:标题栏.centerYAnchor),
rightIconImage.widthAnchor.constraint(equalToConstant:iconSize),
rightIconImage.heightAnchor.constraint(equalToConstant:iconSize)