我在 UITableviewCell 中有一个 UIImageView。当它被点击时,UIImageView 应该动画显示全屏。当图片全屏时点击它应该缩小到原来的位置。
如何实现?
最佳答案
向 View Controller 添加手势识别器。
将手势识别器添加到您的头文件中
@interface viewController : UIViewController <UIGestureRecognizerDelegate>{
UITapGestureRecognizer *tap;
BOOL isFullScreen;
CGRect prevFrame;
}
在您的 viewDidLoad 中添加:
isFullScreen = false;
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgToFullScreen)];
tap.delegate = self;
添加以下委托(delegate)方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
{
BOOL shouldReceiveTouch = YES;
if (gestureRecognizer == tap) {
shouldReceiveTouch = (touch.view == yourImageView);
}
return shouldReceiveTouch;
}
现在您只需实现您的 imgToFullScreen 方法。 确保使用 isFullScreen Bool(如果为假则全屏,如果为真则返回旧尺寸)
imgToFullScreen 方法取决于您希望如何使图像变成全屏。 一种方法是: (这是未经测试但应该有效)
-(void)imgToFullScreen{
if (!isFullScreen) {
[UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
//save previous frame
prevFrame = yourImageView.frame;
[yourImageView setFrame:[[UIScreen mainScreen] bounds]];
}completion:^(BOOL finished){
isFullScreen = true;
}];
return;
} else {
[UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
[yourImageView setFrame:prevFrame];
}completion:^(BOOL finished){
isFullScreen = false;
}];
return;
}
}
关于objective-c - 如何通过点击动画 UIImageview 以显示全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481004/