Как повернуть UISwitch в Xcode?
У меня есть UISwitch в моем приложении. По умолчанию он горизонтальный. Могу ли я повернуть переключатель так, чтобы он был в вертикальном положении? Я не собираюсь отправлять это в App Store, поэтому HIG от Apple не беспокоит меня.
2 ответа
Решение
Конечно, попробуйте изменить атрибут Transform свойства слоя переключателей. Должно выглядеть примерно так.
#define DEGREES_TO_RADIANS(__ANGLE) ((__ANGLE) / 180.0 * M_PI)
UISwitch *aSwitch = [[UISwitch alloc] init];
aSwitch.layer.transform = CATransform3DMakeRotation(DEGREES_TO_RADIANS(90), 0, 0, 1);
aSwitch.frame = CGRectMake(50, 50, aSwitch.frame.size.width, aSwitch.frame.size.height);
[self.view addSubview:aSwitch];
Вы также можете редактировать с помощью CGAffineTransform, поэтому вам не нужно обращаться к свойству layer.
Так что вместо
aSwitch.layer.transform = CATransform3DMakeRotation(DEGREES_TO_RADIANS(90), 0, 0, 1);
вам придется
self.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90));
Предполагая, что ваш UISwitch называется switchControl и подключен через Interface Builder, просто напишите:
self.switchControl.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degrees
Используя функцию градусов в радианах или наоборот:
/** Degrees to Radian **/
#define degreesToRadians( degrees ) ( ( degrees ) / 180.0 * M_PI )
/** Radians to Degrees **/
#define radiansToDegrees( radians ) ( ( radians ) * ( 180.0 / M_PI ) )
self.switchControl.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); // 90 degrees