Tôi muốn sử dụng UILabel chuẩn và tăng kích thước phông chữ để nó lấp đầy không gian dọc. Lấy cảm hứng từ câu trả lời chấp nhận cho question này, tôi định nghĩa một lớp con trên UILabel với thực hiện drawRect này:Mở rộng kích thước phông chữ để vừa với chiều dọc trong UILabel
- (void)drawRect:(CGRect)rect
{
// Size required to render string
CGSize size = [self.text sizeWithFont:self.font];
// For current font point size, calculate points per pixel
float pointsPerPixel = size.height/self.font.pointSize;
// Scale up point size for the height of the label
float desiredPointSize = rect.size.height * pointsPerPixel;
// Create and assign new UIFont with desired point Size
UIFont *newFont = [UIFont fontWithName:self.font.fontName size:desiredPointSize];
self.font = newFont;
// Call super
[super drawRect:rect];
}
Nhưng điều này không làm việc vì nó quy mô font ngoài phía dưới của nhãn. Nếu bạn muốn tái tạo điều này, tôi bắt đầu với một nhãn 289x122 (w x h), Helvetica làm phông chữ và một điểm bắt đầuKích thước 60 phù hợp với nhãn thoải mái. Dưới đây là ví dụ đầu ra từ UILabel tiêu chuẩn và lớp con của tôi bằng cách sử dụng chuỗi "{Hg":
Tôi đã nhìn xuống của phông chữ và ascenders, cố gắng mở rộng quy mô tham gia này vào tài khoản trong các kết hợp khác nhau, nhưng vẫn chưa có bất kỳ may mắn nào. Bất kỳ ý tưởng, là điều này để làm với phông chữ khác nhau có thay đổi descender và ascender độ dài?
cũng ... đó là một sai lầm đáng xấu hổ đơn giản. Cảm ơn vì đã phát hiện ra nó. – user524261
Tôi đã thử triển khai nó trong 'layoutSubviews', nhưng tôi không nghĩ nó hoạt động. Tôi nghĩ lý do là việc gán một phông chữ mới cho lớp con 'UILabel' sẽ kích hoạt một lời gọi khác của' layoutSubviews', điều này có vấn đề. Trong quá trình thực hiện của tôi, một trong những hàng đợi của ứng dụng của tôi đã bị khóa. – user444731