1

UILabelのテキストの最後に画像を追加する際に問題が発生しました。ラベル内のテキストのサイズを検出し、スペースを追加して画像を挿入するにはどうすればよいですか?

4

6 に答える 6

1

私はこれのために小さなコードを書きます:

-(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];

}

お役に立てば幸いです

于 2013-03-19T15:34:06.417 に答える
1

UIViewを使用したくない場合。ラベルの文字列の長さを確認してみませんか。次に、フレームを使用して画像用のスペースを追加します。[UILabel.textlength]は長さを返します。

于 2013-03-19T15:05:28.680 に答える
1

最善の方法は、テイクワンですUIView

UILabelそして、Both And UIImageViewon Thisを追加しますUIView(必要に応じFramを指定します)。

そして、これUIViewMainViewUIViewController.

于 2013-03-19T14:59:16.043 に答える
1
  1. スーパービューが必要な場合、または単に使用する場合は、コンテナ UIView を作成します
  2. そこに置いてUILabelUIImageView
  3. [NSString sizeWithFont:]または同様のsizeWith...方法を使用してテキストのサイズを計算します
  4. UIImageViewテキストのサイズに応じてあなたの位置を計算します
于 2013-03-19T15:13:25.120 に答える
0

これは、特定のフォントと特定のフォント サイズに合わせてサイズを調整できるコード スニペットです。したがって、ラベルのフレームを設定してから、画像ビューも設定できます。

- (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;
}

これが問題の解決に役立つことを願っています。

于 2013-03-19T15:11:31.577 に答える
0

NSString特定のフォントでレンダリングされたときに文字列のサイズを返すカテゴリがあります。いくつかの方法がありますが、最も完全なものは- (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode( Apple Docsを参照)。

その情報があれば、やりたいことを実現できるかもしれません。

于 2013-03-19T15:12:49.910 に答える