2016-08-16 9 views
4

UILabel私はUIViewというテキストを正確に追加したいと思っています。テキストの中心揃え開始位置を計算する

問題は、ラベルのテキストが中央に揃えられているため、実際のテキストの開始位置と配置先を特定する方法がわかりません。UIView

どのように私はこのことを計算できますか?

ありがとうございました!

+1

本当に計算が必要ですか?その中央のラベルを親ビューに使用して、あなたのUIViewと同じように設定するのはなぜでしょうか。ラベルは、テキストの正確なサイズにする必要があります。 – derdida

+0

@derdidaビューは1ピクセル幅と5ピクセルの高さです。テキストが始まる場所に正確に表示します。だから、私はそれを計算する必要があります –

+0

となぜtextviewの左端に設定されていないのですか?そうでなければ、あなたのラベルに "sizeToFit()"を使用して、サイズを取得することができます(label.frame.size.width) – derdida

答えて

0

yourLabel.sizeToFit() 

必要なスペースのラベルを自動的にサイズ変更します。そして、あなたのラベルの枠を次のように読んでください:

yourLabel.frame.size (width or height) 
1

UILabelと新しいUIViewをラップするUIViewコンテナを使用できます。次に、UILabelの内容に応じて幅を決め、それをコンテナの中央に設定することができます。この作業が完了したら、UILabel xを読んで開始点を理解することができます。

enter image description here

のでUILabeltopに少しUIViewのに対し、水平に対してtopbottom、あなたが望む高さにし、中央に制約、bottomheightwidthUILabel

+0

私は本当に理解していません、私はより良い理解を助けるための簡単な例であなたの答えを編集してくださいできますか? –

+0

これはautolayoutでそれを解決する方法の説明です。 – derdida

+0

@ FS.O5私の回答を更新しました –

1
に等しい leadingを持っています

From:How to find the position(x,y) of a letter in UILabel

NSRange range = [@"Good,Morning" rangeOfString:@","]; 
NSString *prefix = [@"Good,Morning" substringToIndex:range.location]; 
CGSize size = [prefix sizeWithFont:[UIFont systemFontOfSize:18]]; 
CGPoint p = CGPointMake(size.width, 0); 
NSLog(@"p.x: %f",p.x); 
NSLog(@"p.y: %f",p.y); 

あなたはあなたの目的のためにそれを修正することができ

1

あなたは、あなたがこれを使用して矩形を見つけることができます

let label = UILabel(frame: CGRectMake(0, 0, 100, 100)) 
label.text = "dshfk,j" 
label.textAlignment = .Center 
label.textColor = UIColor.redColor() 

let string = label.attributedText 
let width = string!.size().width 
let height = string!.size().height 

let view = UIView(frame: CGRectMake(width, height, width, height)) 
view.backgroundColor = UIColor.blackColor() 

を "nsattributedstring" を使用してテキストサイズを取得することができます。..

サンプル・ビュー

enter image description here

関連する問題