Как повернуть 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
Другие вопросы по тегам