Я хотел бы знать, можно ли перевернуть содержимое UIView
внутри одного и того же устройства; а не на внешний монитор, но на самом устройстве.
Я немного искал в google, но все, что я могу найти, это внешние экраны.
Я хотел бы знать, можно ли перевернуть содержимое UIView
внутри одного и того же устройства; а не на внешний монитор, но на самом устройстве.
Я немного искал в google, но все, что я могу найти, это внешние экраны.
Вы можете использовать CGAffineTransformMakeScale с отрицательными значениями. Как:
CGAffineTransformMakeScale(1.0, -1.0);
Это можно применить к представлению:
//Mirror top to bottom
view.transform = CGAffineTransformMakeScale(1.0, -1.0);
или
//Mirror Left to Right
view.transform = CGAffineTransformMakeScale(-1.0, 1.0);
CGAffineTransform
- ваш друг здесь. Здесь некоторый упрощенный примерный код, взятый из шаблона Xcode UIViewController, добавляет UILabel в его представление и отражает это зеркало. Зеркалирование является лишь побочным эффектом отрицательного масштаба. Вы можете делать всевозможные вещи с помощью методов CGAffineTransform
, а не только для масштаба.
- (void)viewDidLoad;
{
[super viewDidLoad];
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectZero];
aLabel.text = @"Sample Text";
[aLabel sizeToFit];
//Add it to the center of our UIViewController View
CGRect labelFrame = aLabel.frame;
labelFrame.origin.x = floorf((CGRectGetWidth(self.view.frame) - CGRectGetWidth(labelFrame)) / 2);
labelFrame.origin.y = floorf((CGRectGetHeight(self.view.frame) - CGRectGetHeight(labelFrame)) / 2);
aLabel.frame = labelFrame;
//Mirror the UILabel left to right
aLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0);
//OR Mirror the UILabel top to bottom
//aLabel.transform = CGAffineTransformMakeScale(1.0, -1.0);
[self.view addSubview:aLabel];
[aLabel release];
}