UIImageView 在向右动画之前向左移动
UIImageView shifts left before animating to the right
这里是新手,
使用 .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 居中。
为您要更改的约束创建 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];
您可能希望将这段代码放在您的 viewDidAppear 方法中,而不是您的 viewDidLoad 中。这将使动画发生在视图出现之后而不是之前。 viewDidLoad 方法在视图层次结构加载到内存后调用,但不一定在所有布局完成后调用。
这里是 link uiviewcontroller 参考。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/
在那里查看这两种方法。如果您继续 iOS 开发,您将非常了解这些方法。
这里是新手,
使用 .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 居中。
为您要更改的约束创建 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];
您可能希望将这段代码放在您的 viewDidAppear 方法中,而不是您的 viewDidLoad 中。这将使动画发生在视图出现之后而不是之前。 viewDidLoad 方法在视图层次结构加载到内存后调用,但不一定在所有布局完成后调用。
这里是 link uiviewcontroller 参考。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/
在那里查看这两种方法。如果您继续 iOS 开发,您将非常了解这些方法。