UILabelのテキストの最後に画像を追加する際に問題が発生しました。ラベル内のテキストのサイズを検出し、スペースを追加して画像を挿入するにはどうすればよいですか?
6 に答える
私はこれのために小さなコードを書きます:
-(void) labelSizeGetter
{
UILabel * mylabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
float heigth=25.0;//max height value of label.
NSString *yourString = @"My great text";
mylabel.font =[UIFont fontWithName:@"Helvetica-Bold" size:12];
[mylabel setText:yourString];
CGSize s = [mylabel.text sizeWithFont:[UIFont systemFontOfSize:12]
constrainedToSize:CGSizeMake(MAXFLOAT,heigth)
lineBreakMode:NSLineBreakByWordWrapping];
// s is a size for text of label. just add 10 pix to width to make it more beautiful.
NSLog(@"%@", NSStringFromCGSize(s));
mylabel.frame=CGRectMake(0, 0, s.width+10, s.height);
[self.view addSubview:mylabel];
UIView * myimage=[[UIView alloc] initWithFrame:CGRectMake(mylabel.frame.origin.x+mylabel.frame.size.width , mylabel.frame.origin.y, 30, 30)];//create your images frame according to frame of your label
myimage.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"arti.png"]];
[self.view addSubview:myimage];
}
お役に立てば幸いです
UIViewを使用したくない場合。ラベルの文字列の長さを確認してみませんか。次に、フレームを使用して画像用のスペースを追加します。[UILabel.textlength]は長さを返します。
最善の方法は、テイクワンですUIView
。
UILabel
そして、Both And UIImageView
on Thisを追加しますUIView
(必要に応じてFramを指定します)。
そして、これUIView
をMainViewのUIViewController
.
- スーパービューが必要な場合、または単に使用する場合は、コンテナ UIView を作成します
- そこに置いて
UILabel
、UIImageView
[NSString sizeWithFont:]
または同様のsizeWith...
方法を使用してテキストのサイズを計算しますUIImageView
テキストのサイズに応じてあなたの位置を計算します
これは、特定のフォントと特定のフォント サイズに合わせてサイズを調整できるコード スニペットです。したがって、ラベルのフレームを設定してから、画像ビューも設定できます。
- (CGSize)getSizeFromText:(NSString*)text {
CGSize constrainedSize;
constrainedSize.width = give maximum allowable width limit;
constrainedSize.height = MAXFLOAT;
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constrainedSize lineBreakMode: UILineBreakModeWordWrap];
return size;
}
これが問題の解決に役立つことを願っています。
NSString
特定のフォントでレンダリングされたときに文字列のサイズを返すカテゴリがあります。いくつかの方法がありますが、最も完全なものは- (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode
( Apple Docsを参照)。
その情報があれば、やりたいことを実現できるかもしれません。