如果我只在一个按钮中放置一个图像并将imageEdgeInsets设置得更接近顶部,则图像保持居中并且所有图像都按预期工作:
[button setImage:image forState:UIControlStateNormal];
[button setImageEdgeInsets:UIEdgeInsetsMake(-15.0, 0.0, 0.0, 0.0)];
Run Code Online (Sandbox Code Playgroud)
如果我只在一个按钮中放置一个文本并将titleEdgeInsets设置得更接近底部,则文本保持居中并且所有文件都按预期工作:
[button setTitle:title forState:UIControlStateNormal];
[button setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 0.0, -30, 0.0)];
Run Code Online (Sandbox Code Playgroud)
但是,如果我将4条线放在一起,文本会干扰图像,并且两者都会失去中心对齐.
我的所有图像都有30像素的宽度,如果我在setTitleEdgeInsets的UIEdgeInsetMake的左参数中放入30,则文本再次居中.问题是图像永远不会居中,因为它似乎依赖于button.titleLabel大小.我已经尝试了许多计算按钮大小,图像大小,titleLabel大小,永远不会完全居中.
有人已经有同样的问题吗?
我正在尝试创建一个按钮,在图标下面有一些文字(有点像app按钮)但是它似乎很难实现.任何想法我怎样才能让文字显示在图像下方UIButton?
我有一个尺寸宽度为200,高度为270的按钮.我希望在同一个按钮上有文字和图像.不作为该文本的背景图像.而不是这个,我想在同一个按钮上显示高度为120的文本和高度为150的图像.怎么做?
和不适用于我的自定义imegEdgeInsets课程。我通过笔尖设置插图titleEdgeInsetsUIButton
自定义UIButton类代码
class FilledButton: kButton {
private var bgColor = AppTonalPalette.color(.primary)
private var bgColorPressed = AppTonalPalette.color(.primary).withAlphaComponent(0.88)
private var foregroundColor = AppTonalPalette.color(.onPrimary)
private var bgColorDisabled = UIColor.init("#1F1F1F", alpha: 0.12)
private var foregroundColorDisabled = AppTonalPalette.color(.onSurface)
override func layoutSubviews() {
super.layoutSubviews()
updateViews()
}
func updateViews() {
tintColor = isEnabled ? foregroundColor : foregroundColorDisabled
setTitleColor(isEnabled ? foregroundColor : foregroundColorDisabled, for: .normal)
setTitleColor(isEnabled ? foregroundColor : foregroundColorDisabled, for: .highlighted)
backgroundColor = isEnabled ? (isHighlighted ? bgColorPressed : bgColor) …Run Code Online (Sandbox Code Playgroud) titleEdgeInsets用于对齐按钮上的标题和图片.我在左边做了图像,在右边做了标题.但是当我点击按钮时,标题向左移动.谢谢
UIImage *image = [UIImage imageNamed:imageName];
[self setImage:image forState:UIControlStateNormal];
CGSize imageSize = self.imageView.frame.size;
CGSize titleSize = self.titleLabel.frame.size;
self.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
self.titleEdgeInsets = UIEdgeInsetsMake(0, ((self.frame.size.width-titleSize.width)/2)-imageSize.width, 0, 0);
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Run Code Online (Sandbox Code Playgroud)


我已经使用以下属性定制了UIButton:
但我的图像总是与左边对齐.如何将其对准UIButton上的中心位置?
我的按钮上有一个隐藏的标题(clearColor).这些标题是字典中的key_value,因此我知道按下了哪个按钮并返回字典中的相应值.我现在明白,正是这些文字推动了我的形象,但我该如何解决?
在属性检查器下,有一个名为Edge的tap,设置为Image.我将左值设置为22,所有图像都对齐到中心.有人可以向我解释这是如何工作的吗?
我的问题很简单但我找不到解决方案.我有一个UIButton,它有一个标题和图像.无论发生什么事情我想要修复图像位置所以我这样设置:
[button setImageEdgeInsets:UIEdgeInsetsMake(0.f, 0.f, 0.f, IS_IPHONE ? 20.f : 60.f)];
Run Code Online (Sandbox Code Playgroud)
我没有为按钮设置任何位置titleLabel.
接下来发生的是我为按钮设置新标题,标题标签缩小或扩展以适应新文本,并且令人惊讶地使图像移动,因此很明显,尽管应用了图像边缘插入,但图像位置取决于标签的框架.我看到两种可以使用的解决方案:
1)使图像独立于标签的框架
2)为标签设置固定大小
但我不知道如何实现它们.能否请您给我一些建议如何解决这个问题?