ios中的图像翻译

bha*_*esh 0 objective-c ios

我不是一个非常优秀的程序员,所以如果这是一个愚蠢的问题原谅我!我只是在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; 
}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*Rob 5

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

  1. 你是用init方法做的viewDidLoad吗?如果是这样,那么在视图创建过程中可能为时过早UIView,因为imageview(例如center)的许多相关属性在那时都不可靠.看看,并确保你得到非零值v1v2.如果您想查看帧坐标等,您可能希望将其推迟到viewDidAppear以后.

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

    在此输入图像描述

  3. 顺便说一句,您的设置v1v2基于centerimageview是好奇.你正在移动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;
                     }];
    
    Run Code Online (Sandbox Code Playgroud)

    顺便说一句,我动画(a)因为这通常是更好的用户体验; (b)在进行这样的诊断时,我可以更容易地看到它正在变化的内容以及它正在变化的内容.如果你不想要动画,显然不要使用animateWithDuration代码.


顺便说一句,如果你想移动UIView的控制,如果你不使用自动布局,最常见的方法是使用animationWithDuration改变无论是centerframe,如:

[UIView animateWithDuration:1.0
                 animations:^{
                     imageview.center = CGPointMake(newX, newY); // set newX and newY to whatever you want
                 }];
Run Code Online (Sandbox Code Playgroud)

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