Для iOS7 я использовал свойство UIButton
titleLabel.frame.size.width
для определения ширины названия моей кнопки в разных локализации, чтобы я мог правильно позиционировать заголовок, используя contentInset
на UIButton
.
My UIButton
настроен с изображением и названием, и я всегда хочу, чтобы комбинация этих двух была горизонтально сосредоточена в UIButton
, например:
[space-x (image) space-y (titleLabel) space-x]
В iOS 7 и Xcode 5.1 следующий код работает отлично (даже работает на iOS 8 GM при построении в XCode 5.1):
CGSize buttonSize = button.frame.size;
CGSize titleSize = button.titleLabel.frame.size;
float contentInset =((buttonSize.width - (titleSize.width + 18 + 3)) / 2 );
float contentInsetRounded = roundf(contentInset);
[button setContentEdgeInsets:(UIEdgeInsetsMake(0, contentInsetRounded, 0, 0))];
(18 - ширина изображения, а 3 - количество интервалов между изображением и titleLabel
или пробел-y в моем примере выше)
В iOS 8 и Xcode 6 GM button.titleLabel.frame.size
возвращает CGSize
с нулевой шириной и высотой, поэтому мой ContentInset заканчивает центрирование UIImage
в UIButton
, заставляя titleLabel
усекать.
Любые идеи? Я попытался установить текст titleLabel
непосредственно перед этим кодом, если он считает, что он пуст, но это тоже не помогло.
Спасибо заранее!