tôi đã cố gắng cho hai ngày để sửa đổi khung của một UILabel
, mà là lố bịch ... Các UILabel
là một IBOutlet, nhưng đó không phải là lý do tại sao nó không làm việc: Tôi đã cố gắng để tạo ra một UILabel
programatically và nó vẫn không hoạt động. Dưới đây là cách tôi làm điều đó:Tại sao tôi không thể thay đổi khung của 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;
Tôi đã hỏi trên IRC và họ nói với tôi rằng không có lý do tại sao khung sẽ không được thay đổi ...
Tôi cũng đã cố gắng để tạo ra một khung với CGRectMake
và cung cấp cho nó tùy ý giá trị nhưng điều đó đã không thực hiện thủ thuật ..
Có ai biết vấn đề này có thể là gì không?
Sửa 1: tôi đăng khung trước và sau, và tôi đã nhận kết quả kỳ lạ:
Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
Chiều cao sau khi tôi thiết lập các khung là giá trị duy nhất mà làm cho tinh thần (Tôi có rất nhiều văn bản trong nhãn có mục đích).
Chỉnh sửa 2: Tôi đã thay đổi mã như sau, nhật ký cho biết khung đã thay đổi nhưng trên trình mô phỏng nó không thay đổi; Tôi đã chứng minh điều đó bằng cách thêm đường viền màu đỏ vào lớp của 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;
Bạn đã đăng nhập khung trước và sau? Và tại sao bạn thay đổi giới hạn (đặc biệt là bằng cách sử dụng khung, mà là trong một không gian tọa độ khác nhau)? – Wain
Tôi đã đăng nhập khung hình trước và sau khi bạn đề xuất và tôi nhận được kết quả kỳ quặc mà tôi đưa vào câu hỏi mà tôi đã chỉnh sửa. –
Tại sao bạn đặt số dòng 0 ở cuối? – Abizern