2013-02-06 40 views
0

我不是一个非常好的程序员,所以如果这是一个愚蠢的问题原谅我! 我刚学的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; 
} 

有什么不好的代码。它只在y方向上转换而不在x中。不管你为v1函数赋值多少都不在乎。任何想法,这是怎么回事..... 我完全stucked 感谢您的帮助

回答

5

在你的问题有关CGAffineTransform,一对夫妇的想法而言:

  1. 你在做这个init方法或viewDidLoad?如果是这样,那么在视图创建过程中可能为时过早,因为imageview(如center)的许多UIView相关属性在此时不可靠。仔细查看一下,确保你获得了v1v2的非零值。如果你想看看帧坐标或类似的东西,你可能会推迟到viewDidAppear或更高版本。

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

    enter image description here

  3. 顺便说一句,你的设置v1和基于imageviewcenter好奇v2。您正在将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改变无论是centerframe,如:

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

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

+1

良好的编辑,我收回我以前的评论 –

+0

刚才我发现在我的代码中,如果我把V1的价值很高的价值前465465746574547然后它使小随机移动在x方向 – bhawesh

+1

问题是自动布局.. ....感谢您宝贵的时间 – bhawesh