为具有图像的UIButton设置标题

14 浏览
0 Comments

为具有图像的UIButton设置标题

我无法使用标准的[button setTitle:@"Title"..]为我的UIButton设置标题。我目前是将一个UILabel放在UIButton的顶部,但是我无法在自动布局中使标签完美对齐。

注意:我为UIButton有一个图片。

0
0 Comments

问题的原因是使用带有图像的UIButton设置标题时需要注意图像和标题的edgeInset。解决方法是使用setTitleEdgeInsets方法来设置图像和标题的边距。以下是一个示例代码:[btn setTitleEdgeInsets:UIEdgeInsetsMake(70.0, -150.0, 5.0, 5.0)]; 你也可以查看这个回答以了解更多详情。

0
0 Comments

问题出现的原因:

在设置UIButton的背景图像和标题时,可能会遇到无法同时设置标题和图像的问题。

解决方法:

可以使用下面的代码来设置UIButton的背景图像和标题,并且保持标题文字的完整显示:

[button setBackgroundImage:[UIImage imageNamed:@"yourButtonImageName"] forState:UIControlStateNormal];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button.titleLabel setNumberOfLines:0];

这段代码首先使用setBackgroundImage方法来设置按钮的背景图像,其中"yourButtonImageName"是你想要设置的图像的名称。然后使用setTitle方法来设置按钮的标题文字,其中"Title"是你想要设置的标题文字。最后使用titleLabel的setNumberOfLines方法来设置标题文字的行数为0,这样可以保证标题文字能够完整显示。

通过以上的代码,你可以同时设置UIButton的背景图像和标题,以及保持标题文字的完整显示。

0
0 Comments

问题的原因是在设置UIButton的title时,如果同时设置了image作为按钮的背景图,title可能会被覆盖而无法显示。解决方法是将image设置为按钮的背景图,然后设置title的属性使其可见。

如果仍然需要在按钮上放置一个Label,可以通过在代码中添加自动布局约束来解决。这种方法在这种情况下有效。

下面是一个在Swift Playground中使用的示例代码:

import UIKit

import XCPlayground

let hostView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))

hostView.layer.borderWidth = 1

hostView.layer.borderColor = UIColor.grayColor().CGColor

let button = UIButton.buttonWithType(.Custom) as! UIButton

button.backgroundColor = UIColor.redColor()

hostView.addSubview(button)

button.setTranslatesAutoresizingMaskIntoConstraints(false)

button.setTitle("This is a really long title for this button", forState: .Normal)

button.titleLabel!.numberOfLines = 0

NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-50-[button(100)]", options: nil, metrics: nil, views: ["button": button]))

NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[button(100)]", options: nil, metrics: nil, views: ["button": button]))

XCPShowView("Host View", hostView)

这段代码在按钮上设置了一个很长的标题,并将标题的行数设置为0,以使内容不会超出按钮的边界。这样就可以在按钮上显示多行标题。

希望这个解决方案能帮助到你。

0