我一直在試圖兩天修改UILabel
的框架,這 是荒謬的......在UILabel
是一個IBOutlet,但是這是不是這個原因 爲什麼它不工作:我試圖以編程方式創建一個UILabel
和 它仍然沒有工作。下面是我如何做到這一點:爲什麼我不能更改我的UILabel的框架?
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;
我已經問上IRC,他們告訴我,有什麼理由 框架不會改變......
我也嘗試創建一個框架與CGRectMake
並給它任意 值,但這並沒有伎倆要麼..
有誰知道可能是什麼問題,請?
編輯1:我記錄的幀之前和之後,我得到了奇怪的結果:
Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
高度後,我設定的框架是唯一有意義的值(我有很多的文字標籤上的目的)。
編輯2:我改變了代碼如下,日誌說 改變了,但在模擬器上它沒有改變;我通過向UILabel
的圖層添加紅色 邊界來證明。
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;
你之前和之後記錄了幀?你爲什麼要改變邊界(特別是使用框架,它在不同的座標空間中)? – Wain
我按照你的建議前後記錄了框架,並得到了包含在我編輯的問題中的奇怪結果。 –
爲什麼在最後將行數設置爲0? – Abizern