У меня есть пара UIB-кнопок, и в IB они установлены в Aspect Fit, но по какой-то причине они всегда растягиваются. Есть ли что-то еще, что вы должны установить? Я перепробовал все разные режимы просмотра, и ни один из них не работает, все они растягиваются.
У меня уже была такая проблема. Я решил ее, поместив изображение в UIImageView
, где contentMode
настройки действительно работают, и поместив прозрачную пользовательскую UIButton
поверх этого.
EDIT: Этот ответ устарел. Смотрите ответ @Werner Altewischer для правильного ответа в современных версиях iOS.
У меня была такая же проблема, но я не мог заставить ее работать (возможно, это ошибка SDK).
В конце концов, как обходной путь, я поместил UIImageView
за моей кнопкой и установил для него нужные мне параметры, а затем просто поместил поверх него пустой UIButton
.
Режимы содержимого UIView применяются к соответствующему «содержимому» CALayer. Это работает для UIImageView
s, потому что они устанавливают содержимое CALayer
на соответствующее CGImage
.
drawRect:
в конечном итоге отображает содержимое слоя.
Пользовательский UIButton
(насколько мне известно) не имеет содержимого (кнопки в стиле прямоугольника с закругленными углами могут отображаться с использованием содержимого). У кнопки есть подвиды: фон UIImageView
, изображение UIImageView
и заголовок UILabel
. Установка contentMode
в подпредставлениях может делать то, что вы хотите, но возиться с иерархией представлений UIButton
- это немного недопустимо.