iOS创建按钮,带有两个单独的标签

时间:2014-05-29 19:52:13

标签: ios uibutton

我想创建一个带有两个独立标签的按钮。 我想设置一个按钮,两个不同颜色的单独文本。 例如

[myButton setTitle: @"Title" forState: UIControlStateNormal]; 
[myButton setTitle2: @"Title2" forState: UIControlStateNormal]; 

甚至可能吗?也许我需要创建一个新的控件?谁能帮我?我将非常感谢一步一步的教程。

5 个答案:

答案 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)

UIButtonUIView的子类。因此,您可以使用- (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)