iOS: Mirror content on screen

2019-04-03 13:33发布

I would like to know if it is possible to flip the contents of a UIView within the same device; meaning not to an external monitor but on the device itself.

I have searched a bit on google, but all I can find is to external screens.

2条回答
虎瘦雄心在
2楼-- · 2019-04-03 14:03

CGAffineTransform is your friend here. Here's some simplified sample code taken form an Xcode Template UIViewController to add a UILabel to a it's view and have that view mirrored. The mirroring is just a side affect of a negative scale. You can do all sorts of things with CGAffineTransform methods, not just limited to scale.

- (void)viewDidLoad;
{
  [super viewDidLoad];

  UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectZero];
  aLabel.text = @"Sample Text";
  [aLabel sizeToFit];

  //Add it to the center of our UIViewController's 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];
}
查看更多
Deceive 欺骗
3楼-- · 2019-04-03 14:23

You can use CGAffineTransformMakeScale with negative values. Like:

CGAffineTransformMakeScale(1.0, -1.0);

This can be applied on the view by:

//Mirror top to bottom
view.transform = CGAffineTransformMakeScale(1.0, -1.0);

or

//Mirror Left to Right
view.transform = CGAffineTransformMakeScale(-1.0, 1.0);
查看更多
登录 后发表回答