aUILabel
と aUIButton
を除いて動的に変化するテキストがあり、UILabel
それらを単一のラベルとして表示したいので、単一行で中央揃えにする必要がありますが、下線付きのテキスト「The Gluten free foodie」を図に示すと、両方の動作が異なりますテキストとは異なり、クリック可能な機能Found by
。写真の「The Gluten free foodie」のようなボタンのテキストが非常に長くなる場合、このタスクを達成する方法がわかりません。次に、写真のようにラベルを左に移動するにはどうすればよいですか。前もって感謝します。
質問する
447 次
4 に答える
2
これを試して:
NSString *text1 = @"Found by "; //text of your uilabel
CGSize constraint1 = CGSizeMake(320, 2000); //suppose your total width of superview is 320
CGSize size1 = [text1 sizeWithFont:[UIFont fontWithName:@"ArialMT" size:12.0] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; //font which are used in your "Found by" label
NSString *text2 = @"The Gluten free foodie"; //text of your uibutton
CGSize constraint2 = CGSizeMake(320, 2000);
CGSize size2 = [text2 sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:12.0] constrainedToSize:constraint2 lineBreakMode:UILineBreakModeWordWrap]; //font which are used in your "The Gluten free foodie" button
float finalwidth = size1.width + size2.width + 2;
float centerx = 320 - finalwidth; //suppose your total width of view is 320
centerx = centerx/2.0;
lblFoundBy.frame = CGRectMake(centerx, 20, size1.width, size1.height);
btnThe.frame = CGRectMake(centerx + size1.width + 2, 20, size2.width, size2.height);
- そのラベルのテキストに基づいてラベルの幅を見つける
- そのボタンのタイトルに基づいてボタンの幅を見つけます
- ラベル、ボタン、およびこれら 2 つの間のスペースの合計幅を取得します。
- その合計幅を uiview (ボタンとラベルのスーパービュー) の幅 (320 と仮定) から引きます。
- 最後に、合計の余分なスペースが得られます。その後、この余分なスペースは 2 で割られます。
- そして最後に、それに基づいて、ラベルとボタンのフレーム (x 位置が重要です) を設定します。
于 2013-05-14T12:30:28.147 に答える
1
この場合、ios6以降のバージョンのこのアプリなら、このようにすることができます...
NSString *infoString=@"Founded by The Gluten free foodie";
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];
NSInteger _stringLength=[infoString length];
// ------------------ Give your range for underline
[attString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:NSMakeRange(10, _stringLength-10)];
label.attributedText = attString;
[label setBackgroundColor:[UIColor clearColor]];
// ---------------- Give frame according to your text -------
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(70, 15, 195, 35);
[btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
[label addSubview:btn];
[label setUserInteractionEnabled:YES];
そして、この画像を見てください
于 2013-05-14T12:37:40.940 に答える
0
2 つのラベルを使用できます。最初の幅は修正されます。次の方法を使用して、秒の幅を計算します。
[[label text] sizeWithFont:label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
アップルのドキュメントを調べて、その仕組みを見つけてください。幅を取得したら、両方のフレームを指定できます。160-両方のラベルの幅の合計/2 最初のラベルの x を取得します。この x + 最初のラベルの幅により、2 番目のラベルの x が得られます。
于 2013-05-14T12:27:45.590 に答える