ios中的图像翻译

时间:2013-02-06 14:27:02

标签: ios objective-c

我不是一个非常优秀的程序员,所以如果这是一个愚蠢的问题原谅我! 我只是在ios中学习图像转换 我想在按钮点击事件中将图像从一个位置转换为另一个位置 这是代码......

- (IBAction)showinfobybutton:(id)sender {
    CGFloat v1 = imageview.center.x;
    CGFloat v2 = imageview.center.y;
    CGAffineTransform trans = CGAffineTransformTranslate(imageview.transform, v1, v2);
    imageview.transform = trans; 
}

代码有什么问题。它只能在y方向上转换而不是在x中转换。无论你为v1函数放多少值都不在乎。任何想法发生了什么..... 我完全被困了 感谢您的帮助

1 个答案:

答案 0 :(得分:5)

关于CGAffineTransform的问题,有几点想法:

  1. 您是使用init方法还是viewDidLoad执行此操作?如果是这样,那么在视图创建过程中可能为时过早,因为UIView的许多imageview相关属性(例如center)在此时不可靠。请查看并确保v1v2获得非零值。如果要查看帧坐标等,可能需要将其推迟到viewDidAppear或更晚。

  2. 您使用的是自动布局吗?打开故事板或NIB并查看文档属性(如下所示)。如果你在屏幕上移动东西,你可能想关闭它。

    enter image description here

  3. 另外,基于v1 v2的{​​{1}}和center设置很奇怪。您将imageview移动了center的数量。通常你会看到如下内容:

    center

    顺便说一下,我动画(a)因为这通常是更好的用户体验; (b)在进行这样的诊断时,我可以更容易地看到它正在变化的内容以及它正在变化的内容。如果您不想要动画,显然不要使用CGFloat dx = 100.0; CGFloat dy = 200.0; [UIView animateWithDuration:1.0 animations:^{ CGAffineTransform trans = CGAffineTransformTranslate(self.someView.transform, dx, dy); imageview.transform = trans; }]; 代码。


  4. 顺便说一句,如果您要移动animateWithDuration控件,如果您不使用自动布局,最常见的方法是使用UIView更改animationWithDurationcenter,例如:

    frame

    如果您正在使用自动布局,则该过程会稍微复杂一些。自动布局中的一种技术是以编程方式更改约束,但这可能超出了此问题的范围。