iOS:屏幕上的镜像内容

时间:2011-12-20 11:57:57

标签: ios objective-c uiview cgaffinetransform

我想知道是否可以在同一设备中翻转UIView的内容;不是指外部显示器,而是指设备本身。

我在google上搜索了一下,但我能找到的只是外屏。

2 个答案:

答案 0 :(得分:47)

您可以将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);

答案 1 :(得分:2)

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'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];
}