I want to have a UIButton with two lines of text, with each line in different color. Is it possible to have like that ?
5 に答える
私が考えることができる2つのアプローチがあります:
アプローチ1(簡単):イメージボタンにする
アプローチ 2 (ハード) : 2 つの個別の UILabel を使用してカスタム UIButton を作成し、それらに異なる色を設定できるようにします。
アプローチ 2 を実現するには、最初に UIButton をスーパークラスとして持つクラスを作成します。次に、メソッドをオーバーライドします- (void)drawRect
。SOで回答を繰り返さないために、これを読んでください: UIButtonサブクラスで-drawrectをオーバーライドする方法は?
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)
こんにちは、この回答は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;
このようにしてみてください...
はい確かに..!!! 正確に表示したい画像を作成し、その画像をそのボタンの背景として設定します。簡単だ...
まず、「カスタム」タイプのボタンを作成します。プログラムでそれを行う必要がある場合:
UIButton* myButton = [UIButton buttonWithType: UIButtonTypeCustom];
myButton.frame = CGRectMake (x,y,幅,高さ);
ラベルを作成します。
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]; // ボタンをプログラムで作成した場合のみ