Ben saçma bir UILabel
çerçevesini değiştirmek için iki gündür çalışıyorlar ... UILabel
bir IBOutlet, ama bu işe yaramıyor nedeni değil: Ben programlama yoluyla UILabel
yaratmaya çalışmış ve hala çalışmıyor.UILabel'ım çerçevesini neden değiştiremiyorum?
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.descriptionLabel.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = self.descriptionLabel.frame;
frame.size.height = frameHeight;
self.descriptionLabel.frame = frame;
CGRect bounds = self.descriptionLabel.frame;
bounds.origin.x = self.descriptionLabel.frame.origin.x + 10.0;
bounds.size.width = self.descriptionLabel.frame.size.width - 20.0;
self.descriptionLabel.bounds = bounds;
self.descriptionLabel.numberOfLines = 0;
Zaten IRC istedi ve onlar çerçeve değiştirilemez hiçbir neden olmadığını söyledi ...
Ben de bir çerçeve oluşturmaya çalıştınız: İşte böyle yaparız CGRectMake
ile ve rasgele değeri vermek ama bu hile yapmadı ..
Sorunun ne olduğunu bilen var mı?
Düzenleme 1: Ben önce ve sonra çerçeveyi açmış ve Garip sonuçlar var:
Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
yükseklik ben çerçeve mantıklı gelen tek değerdir ayarladıktan sonra (ben çok bir var etiket üzerindeki metinler.
Düzenleme 2: Aşağıdaki gibi kodu değiştirdim, günlük çerçeve değiştiğini ancak simülatörde değişmediğini söylüyor; UILabel
katmanına kırmızı kenarlıkları ekleyerek bunu kanıtladım. Bunu yaparken
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.view.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = CGRectMake(0.0, 300.0, self.view.frame.size.width, frameHeight);
self.descriptionLabel.frame = frame;
DDLogInfo(@"After: %f %f %f %f", self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y, self.descriptionLabel.frame.size.width, self.descriptionLabel.frame.size.height);
// After: 0.000000 300.000000 320.000000 585.000000
self.descriptionLabel.numberOfLines = 0;
self.descriptionLabel.layer.borderColor = [UIColor redColor].CGColor;
self.descriptionLabel.layer.borderWidth = 2;
Çerçeveyi önce ve sonra kaydettiniz mi? Ve neden sınırları değiştiriyorsunuz (özellikle farklı bir koordinat alanında olan çerçeveyi kullanarak)? – Wain
Çerçeveyi önerdiğin gibi önce ve sonra kaydettim ve edindiğim soruya dahil olduğumda tuhaf sonuçlar aldım. –
Neden satır sayısını en sonunda 0 olarak ayarlıyorsunuz? – Abizern