Một số nền: Tôi muốn có 3 nút trên UIToolBar
. Tôi đã xoay xở để lấy cái giữa ở giữa và mọi thứ bằng cách đặt nó vào một số UIToolBar
vào một số UIView
.Thay đổi kích cỡ một UIBarButtonItem khi tiêu đề quá rộng
Mọi thứ trông giống như nó sẽ tách biệt khi tiêu đề của nút giữa quá lớn. Sau đó nó được hiển thị dưới các nút trái hoặc phải.
Tôi không thể có được chiều rộng UIToolBar
hoặc UIBarButtonItems
để có thể thay đổi kích thước chúng khi chúng quá lớn. 'UIBarButtonItem' có thuộc tính width
thực sự tốt đẹp cho phép tôi thay đổi kích thước của điều khiển nếu nó quá lớn. Nhưng tôi không thể biết khi nào nó quá lớn!
CHỈNH SỬA: Tôi đã thực hiện một cách khó khăn cuối cùng. Tôi tính toán kích thước của văn bản và so sánh nó với kích thước pixel tối đa mà tôi thấy vừa vặn trên thiết bị. Xấu xí nhưng nó hoạt động.
+ (CGFloat)calculateTextWidth:(NSString *)text
{
CGSize fullSize = [UIScreen mainScreen].applicationFrame.size;
UIGraphicsBeginImageContext(fullSize);
CGContextRef context = UIGraphicsGetCurrentContext();
// calculate the text size
CGContextSelectFont(context, "Helvetica", 17, kCGEncodingMacRoman);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));
CGContextSetTextDrawingMode(context, kCGTextInvisible);
// measure the text
CGPoint initialTextPosition = CGContextGetTextPosition(context);
CGContextShowTextAtPoint(context, 0, 0, [text cStringUsingEncoding:NSASCIIStringEncoding], text.length);
CGPoint finalTextPosition = CGContextGetTextPosition(context);
return finalTextPosition.x - initialTextPosition.x;
}
nếu bạn thiết lập chiều rộng UIBarButtonItem đến 0.0, nó điều chỉnh chiều rộng của nó tự động, do đó không cần tính chiều rộng. Đặc biệt hữu ích khi sử dụng các chuỗi được bản địa hóa, luôn có kích thước khác nhau. –