Многие элементы управления предназначены для определенного размера. Если бы вы реализовывали это самостоятельно, вы бы переопределили setFrame:
, скорректировали параметр frame в соответствии с требуемым размером вашего элемента управления, а затем передали его в [super setFrame:]
.
Если вы создаете подкласс для элемента управления с таким поведением, на самом деле нет способа переопределить его, потому что ваш подкласс унаследует реализацию суперкласса setFrame:
, которая изменяет ваш прямоугольник фрейма. И нет способа установить кадр вашего управления без вызова [super setFrame:]
.
Скорее всего, вам придется наследовать от UIControl
и реализовать свойства / поведения, которые вы хотите от UISwitch
, вручную, чтобы обойти это.