UIImageView在动画制作之前向左移动到右边

时间:2015-07-11 17:31:20

标签: objective-c xcode animation uiimageview

新手在这里,

在.m文件中使用此代码,我的目标是将UIImageView设置为右侧

@interface ViewController ()

@property (strong, nonatomic) IBOutlet UIImageView *myImageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [UIView animateWithDuration:1
                          delay:0
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         self.myImageView.center = CGPointMake(self.myImageView.center.x + 100, self.myImageView.center.y);
                     }
                     completion:^(BOOL finished){

                     }];
}

但实际发生的是图像视图向左移动100个点,然后向右移动100个点回到其原始位置。我不知道为什么会这样。如何实现直接向右移动的动画?

注意:我不确定这是否与任何内容有关,但我在界面构建器中添加了约束以将此UIImageView置于中间位置。

2 个答案:

答案 0 :(得分:1)

为要更改的约束创建IBOutlets。就像你对任何其他UIKit元素一样。然后在你的代码中而不是:

self.myImageView.center = CGPointMake(self.myImageView.center.x + 100, self.myImageView.center.y);

做这样的事情:

self.imageViewTralingSpaceConstraint.constant = 100; //Or whatever value makes sense

然后在animateWithDuration块中添加[self.view layoutSubViews];

答案 1 :(得分:1)

您可能希望将此代码放在viewDidAppear方法而不是viewDidLoad中。这将使视图在视图出现之后而不是之前发生。 viewDidLoad方法在视图层次结构加载到内存后调用,但在完成所有布局后不一定会被调用。

这是uiviewcontroller参考的链接。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/

检查这两种方法。如果你继续进行iOS开发,你会很好地了解这些方法。