我想要一个带有两行文本的 UIButton,每行的颜色不同。有可能有这样的吗?
5 回答
嗨,这个答案仅适用于上述 ios 6 ...
使用 ios 6 的属性文本来实现这一点......
NSString* infoString=@"This is an example of Attributed String";
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];
NSInteger _stringLength=[infoString length];
UIColor *_red=[UIColor redColor];
UIFont *font=[UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
[attString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, _stringLength)];
[attString addAttribute:NSForegroundColorAttributeName value:_red range:NSMakeRange(0, _stringLength/2)];
[self.attribButton setAttributedTitle:attString forState:UIControlStateNormal];
self.attribButton.titleLabel.numberOfLines=2;
试试这样...
我能想到两种方法:
方法1(简单):将其设为图像按钮
方法 2(困难):制作一个自定义 UIButton,带有 2 个单独的 UILabel,这样您就可以为它们配置不同的颜色
要实现方法 2,您首先创建一个以 UIButton 作为超类的类。然后,覆盖- (void)drawRect
方法。为了不在 SO 中重复回答,请阅读以下内容:How to override -drawrect in UIButton subclass?
In Swift
var main_string = "Hello World"
var string_to_color = "World"
var range = (main_string as NSString).rangeOfString(string_to_color)
var attributedString = NSMutableAttributedString(string:main_string)
attributedString.addAttribute(NSForegroundColorAttributeName, value: appSingleton.appRedColor , range: range)
self.celciusButton.setAttributedTitle(attributedString, forState: UIControlState.Normal)
是的,当然..!!! 制作您想要显示的图像,然后将图像设置为该按钮的背景..!这很简单...
首先,将您的按钮设为“自定义”类型。如果您需要以编程方式执行此操作:
UIButton* myButton = [UIButton buttonWithType: UIButtonTypeCustom];
myButton.frame = CGRectMake (x,y,width,height);
现在制作你的标签:
UILabel* line1 = [[UILabel alloc] initWithFrame:CGRectMake(0,0,buttonWidth,buttonHeight/2)];
UILabel* line2 = [[UILabel alloc] initWithFrame:CGRectMake(0,buttonHeight/2,buttonWidth,buttonHeight/2)];
并分配您想要的文本颜色:
line1.textColor = [UIColor blueColor];
line2.textColor = [UIColor redColor];
然后将标签添加到按钮,并将按钮添加到视图:
[myButton addSubview:line1];
[myButton addSubview:line2];
[self.view addSubview:myButton]; // 仅当您以编程方式创建按钮时