关于你的问题CGAffineTransform
,有几个想法:
你是在init
方法还是这样做viewDidLoad
?如果是这样,那在视图创建过程中可能为时过早,因为(例如)的许多UIView
相关属性在那个时候并不可靠。看一看,确保你得到 和 的非零值。如果您想查看帧坐标等,您可能希望将其推迟到或以后。imageview
center
v1
v2
viewDidAppear
你在使用自动布局吗?打开故事板或 NIB 并查看文档属性(如下)。如果您在屏幕上移动东西,您可能需要将其关闭。
顺便说一句,你的设置v1
和v2
基于center
的imageview
是好奇的。您正在移动 的center
数量center
。通常你会看到如下内容:
CGFloat dx = 100.0;
CGFloat dy = 200.0;
[UIView animateWithDuration:1.0
animations:^{
CGAffineTransform trans = CGAffineTransformTranslate(self.someView.transform, dx, dy);
imageview.transform = trans;
}];
顺便说一句,我制作了 (a) 动画,因为这通常是更好的用户体验;(b) 在进行这样的诊断时,我可以更轻松地了解它的变化和变化。如果您不想要动画,显然不要使用animateWithDuration
代码。
顺便说一句,如果你想移动一个UIView
控件,如果你不使用自动布局,最常见的方法是使用animationWithDuration
改变center
或frame
,例如:
[UIView animateWithDuration:1.0
animations:^{
imageview.center = CGPointMake(newX, newY); // set newX and newY to whatever you want
}];
如果您使用自动布局,则该过程会稍微复杂一些。自动布局中的一种技术是以编程方式更改约束,但这可能超出了这个问题的范围。