1

uilable パディングに問題があります。uilabelにパディングイベントを1文字だけ表示させたい

http://i.stack.imgur.com/T4Aet.png

だから私は「質問する」言葉からのパディングを持っています、

私がやったことは次のとおりです。

#import "NetraCell.h"
#import <QuartzCore/QuartzCore.h>
@implementation NetraCell
@synthesize NetraLabelForPrice,NetraImageDeals;


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        /////implement for NetraLabelForPrice
//
         NetraLabelForPrice=[[UILabel alloc] init];
         NetraLabelForPrice.backgroundColor=[UIColor brownColor];
         NetraLabelForPrice.textColor=[UIColor whiteColor];
         NetraLabelForPrice.textAlignment=NSTextAlignmentCenter;
         NetraLabelForPrice.font=[UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
         [NetraLabelForPrice.layer setCornerRadius:20];


    //   NetraImageDeals=[[UIImage alloc] init];
     [self.contentView addSubview:NetraLabelForPrice];
         /////


    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}
- (void)layoutSubviews {

    [super layoutSubviews];
    self.imageView.frame = CGRectMake(10.0f, 15.0f, 80.0f, 80.0f);
    self.NetraLabelForPrice.frame = CGRectMake(100.0f, 15.0f, NetraLabelForPrice.frame.origin.x, 25);
    [self.imageView.layer setCornerRadius:7.0f];
    [self.NetraLabelForPrice.layer setCornerRadius:7.0f];

}
@end

私はこのように置きます

self.NetraLabelForPrice.frame = CGRectMake(100.0f, 15.0f, NetraLabelForPrice.frame.origin.x, 25);

しかし、なぜ私は label.text だけで "-" 幅が減らないのですか?

4

1 に答える 1

1

これは紛らわしいです。layoutSubviewsラベルの新しい幅をラベルの現在の x 原点に設定しようとしました。それはまったく意味がありません。ラベルのテキストと必要なパディングに基づいて、ラベルの幅を設定する必要があります。

layoutSubviews、次の行を置き換えます。

self.NetraLabelForPrice.frame = CGRectMake(100.0f, 15.0f, NetraLabelForPrice.frame.origin.x, 25);

これとともに:

[NetraLabelForPrice sizeToFit]; // make the label just big enough for the text
CGRect labelFrame = NetraLabelForPrice.frame;
labelFrame.origin.x = 100;
labelFrame.origin.y = 15;
labelFrame.size.width += 20; // set to the amount of padding you want
NetraLabelForPrice.frame = labelFrame;

コードのもう 1 つの奇妙な点 -initメソッドでは、ラベルの角の半径を 20 に設定し、次に 7 に設定しlayoutSubviewsます。なんで?

于 2012-10-18T05:25:33.007 に答える