我正在开发一款应用程序,该应用程序具有允许用户从其照片库中选择图像并附加标题的功能,以便在UICollectionView中显示。我正在使用故事板和自动布局。我有一个UIView(嵌入在导航控制器中),它包含一个基本文本字段供用户输入其标题,一个初始化图像选择器控制器的按钮,以及一个小UIView子视图,其中包含所选图像的缩略图和用户决定更改其选择时的小“X”按钮。
当用户做出选择时,我想要一个动画来隐藏“选择图像”按钮并移动保持图像缩略图的UIView进入它的位置。如果他们然后按下缩略图一角的“X”按钮,则UIView将向下移动,“选择图像”按钮将重新出现。
我的问题是,当用户取消选择时,我可以让动画工作,但是当他们制作选择并从图像选择器控制器返回时;视图根本没有移动,但是为了测试动画代码,我将“选择图像”按钮的alpha设置为0.0,这样就可以正常动画!?
以下是一些代码:
// MyController.m
// When user hits the 'select image' button
- (void)selectImage
{
self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.delegate = self;
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[self presentViewController:self.imagePicker animated:YES completion:nil];
}
// When user has selected an image from photo library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Grab photo selection..
[self dismissViewControllerAnimated:YES completion:nil];
[self imageSelectionMade];
}
// Animation to hide button and move thumbnail up
- (void)imageSelectionMade
{
CGRect rect = self.thumbView.frame;
[UIView animateWithDuration:0.3 delay:1.0 options:UIViewAnimationOptionCurveLinear animations:^{
self.buttonView.alpha = 0;
self.thumbView.frame = CGRectMake(rect.origin.x, (rect.origin.y - 76), rect.size.width, rect.size.height);
}completion:nil];
// Show 'X' button on corner of image
}
// Animation to move thumbnail down and display button again
- (void)imageSelectionCancelled
{
CGRect rect = self.thumbView.frame;
[UIView animateWithDuration:0.3 animations:^{
self.buttonView.alpha = 1.0;
self.thumbView.frame = CGRectMake(rect.origin.x, (rect.origin.y + 76), rect.size.width, rect.size.height);
}];
// Change image to 'placeholder' and hide 'X' button..
}
我在这里已经阅读了很多关于类似问题的不同帖子,但似乎都没有解决问题。我试过操纵视图的约束而不是视图的框架,这只会导致它在两个实例中“捕捉”到位。我试过[self.view layoutIfNeeded]
没有效果。我已经尝试将第一个动画的代码放在之前出现的图像选择器有效,但显然会被进入视图的选择器覆盖。我不敢说我不知道还有什么可以尝试不能禁用自动布局(鉴于我有限的经验以及我不知道它将如何影响其余部分的表情,我并不过分自信。应用程序)
有谁知道造成这种情况的原因是什么?我只能猜测它与子视图的约束有关,但为什么它在我的imageSelectionCancelled
方法中有用?
注意:我正在使用Xcode 4.6