UILabel Padding в зависимости от содержания
У меня проблемы с доступной прокладкой. я хочу, чтобы у моего uilabel было событие заполнения только одним отображением символа
так что у меня есть отступ от слов "Задать вопрос",
что я сделал, это:
#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 просто " - " ширина не уменьшается?
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;
Еще одна странная вещь в вашем коде - в init
Метод, вы устанавливаете угловой радиус метки до 20, а затем вы устанавливаете его на 7 в layoutSubviews
, Зачем?