我想创建一个带有两个独立标签的按钮。 我想设置一个按钮,两个不同颜色的单独文本。 例如
[myButton setTitle: @"Title" forState: UIControlStateNormal];
[myButton setTitle2: @"Title2" forState: UIControlStateNormal];
甚至可能吗?也许我需要创建一个新的控件?谁能帮我?我将非常感谢一步一步的教程。
答案 0 :(得分:4)
如果你想在Interface Builder中完成所有操作,你可以在视图中放置两个UILabel,然后在它们的顶部放置一个UIButton。然后使用Attributes Inspector将UIButton的类型更改为“Custom”并删除它具有的任何现有标签或占位符文本。这将使按钮清晰,因此两个标签都显示出来,您可以将UIButton的IBAction设置为对两个单独的UILabel执行任何操作。
答案 1 :(得分:3)
另外,你可以这样做:
UIButton *testButton = [UIButton buttonWithType:UIButtonTypeCustom];
testButton.frame = CGRectMake(0, 0, 200, 40);
[self.view addSubview:testButton];
UILabel *firstLineTestButton = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 20)];
firstLineTestButton.text = @"First line";
firstLineTestButton.font = [UIFont systemFontOfSize:12];
[testButton addSubview:firstLineTestButton];
UILabel *secondLineTestButton = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, 200, 20)];
secondLineTestButton.text = @"Second line";
secondLineTestButton.font = [UIFont boldSystemFontOfSize:12];
[testButton addSubview:secondLineTestButton];
但@ vikingosegundo的解决方案更适合新的SDK
答案 2 :(得分:2)
对于iOS 6及更高版本,您可以使用setAttributedTitle:forState:
设置属性字符串。 NSAttributedString可以有许多不同的属性,如文本颜色。
答案 3 :(得分:0)
UIButton
是UIView
的子类。因此,您可以使用- (void)addSubview:(UIView *)view
为按钮添加两个不同的标签。然后可以使用Autolayout(如果您正在使用它)或框架+弹簧/支柱进行定位。
答案 4 :(得分:0)
快速版本:
以下代码还将两个标题在按钮内水平和垂直居中,并进行了一些字体样式调整。
let lineOne = UILabel.init(frame: CGRect(x: 0, y: self.button.frame.size.height / 4, width: self.button.frame.size.width, height: self.button.frame.size.height / 4))
lineOne.text = "Title 1"
lineOne.textColor = .black
lineOne.font = UIFont.boldSystemFont(ofSize: 13.0)
lineOne.textAlignment = .center
let lineTwo = UILabel.init(frame: CGRect(x: 0, y: lineOne.frame.size.height * 2, width: self.button.frame.size.width, height: self.button.frame.size.height / 4))
lineTwo.text = "Title 2"
lineTwo.textColor = .black
lineTwo.font = UIFont.boldSystemFont(ofSize: 13)
lineTwo.textAlignment = .center
self.button.addSubview(lineOne)
self.button.insertSubview(lineTwo, belowSubview: lineOne)