我试图使图像视图( logo
下文)由100个像素向上滑动。 我使用此代码,但没有任何反应都:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3];
logo.center = CGPointMake(logo.center.x, logo.center.y - 100);
[UIView commitAnimations];
这个代码是在viewDidLoad
方法。 具体来说, logo.center = ...
不能正常工作。 其他的事情(比如改变阿尔法)做的。 也许我没有使用正确的代码,以向上滑动呢?
对于非自动布局故事板/粒,你的代码是好的。 顺便说一句,它现在一般建议您使用动画块 :
[UIView animateWithDuration:3.0
animations:^{
self.logo.center = CGPointMake(self.logo.center.x, self.logo.center.y - 100.0);
}];
或者,如果你想在选项之类多一点的控制,你可以使用:
[UIView animateWithDuration:3.0
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^{
self.logo.center = CGPointMake(self.logo.center.x, self.logo.center.y - 100);
}
completion:nil];
但是,你的代码应该,如果你不使用自动布局工作。 只是,上述语法是首选为iOS 4及更高版本。
如果您使用自动布局,你(一)创建一个IBOutlet
为您的垂直空间的限制(见下文),然后(B),你可以这样做:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
static BOOL logoAlreadyMoved = NO; // or have an instance variable
if (!logoAlreadyMoved)
{
logoAlreadyMoved = YES; // set this first, in case this method is called again
self.imageVerticalSpaceConstraint.constant -= 100.0;
[UIView animateWithDuration:3.0 animations:^{
[self.view layoutIfNeeded];
}];
}
}
要添加一个IBOutlet
的一个约束,从约束的助理编辑您的.h只是控制 -drag:
顺便说一句,如果你是动画的约束,是你可能已经链接到ImageView的任何其他约束敏感。 通常,如果你把一些图片正下方,这将有它的约束链接到图像,所以您可能需要确保你不会有任何限制其他控件的图像(除非你想他们继续前进,太) 。
如果你可以告诉你使用自动版式由最右边的面板中打开你的故事板或NIB,然后选择“文件检查器”(第一个选项卡,或者你可以通过按选项 + 命令 + 1(数量拉起“ 1" )):
记住,如果你在支持预iOS 6的策划,请务必关闭“自动布局”。 自动布局是iOS 6的功能,不会在早期版本的iOS的工作。
有ü尝试
logo.frame = CGRectMake(logo.frame.origin.x, logo.frame.origin.y - 100,logo.frame.size.width,logo.frame.size.height)