代码之家  ›  专栏  ›  技术社区  ›  Madhup Singh Yadav

如何反转变换UIView?

  •  1
  • Madhup Singh Yadav  · 技术社区  · 16 年前

    我正在使用core plot library在我的iPhone应用程序上绘制条形图,当我尝试在图形中添加标签或其他视图时,问题出现了,

    实际上,我添加的视图是垂直反向绘制的 like this ........

    UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(250, 90, 70, 25)];
        [lbl setBackgroundColor:[UIColor redColor]];
        [lbl setText:@"HELLO"];
        [self.view addSubview:lbl];
        [lbl release];
    

    我不敢玩核心情节库。

    那么,有没有其他方法可以把事情做好呢?我应该在添加视图之前进行转换吗?

    希望我的问题对每个人都清楚。

    2 回复  |  直到 16 年前
        1
  •  16
  •   Kenny Winker    16 年前

    看起来核心图视图是用CGAffineTransform反转的。您的视图可能从其superview继承了反转。 其实做起来很简单,

    lbl.transform = CGAffineTransformMakeScale(1,-1);
    

    我们应该做到这一点。 如果你不得不做很多次,也许可以用这样的方法来简化它,

    CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1);
    lbl.transform = verticalFlip;
    otherLbl.transform = verticalFlip;
    

    x轴翻转将是 CGAffineTransformMakeScale(-1,1);

        2
  •  6
  •   Vladimir    16 年前

    为了避免猜测实际的变换值,可以尝试使用 CGAffineTransformInvert 功能:

    lbl.transform = CGAffineTransformInvert(self.view.transform);
    
        3
  •  0
  •   Daniel Selvan    7 年前

    如果我们想变换一个三维模型层,你需要按照如下方式处理它,

    // To inverse the graph vertically
    annotationGraph.transform = CATransform3DMakeAffineTransform(CGAffineTransform(scaleX: 1, y: -1))
    

    否则你会收到这个,

    无法将“CGAffineTransform”类型的值分配给“CATTransform3D”类型