一.概述
由于功能需求,需要在手机上通点击按钮来展示图片,并支持对图片进行缩放.但手机是竖屏的,图片展示效果可能不太理想,我就计划将图片变为横屏(旋转90°)来在手机上展示.这个功能单纯展示图片实现起来比较简单,但对图片进行缩放后仍能保持其原有的状态对我来说是一个挑衅,万幸,终极实现了@>_<@虽然可能还是不太理想,但我还是决定记录一下!
二.代码展示
- (void)viewDidLoad {
[super viewDidLoad];
// 添加一个额外的容器视图来盛放图片
self.containerView = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.containerView];
self.scrollView = [[UIScrollView alloc] initWithFrame:self.containerView.bounds];
self.scrollView.delegate = self;
self.scrollView.minimumZoomScale = 1.0; // 最小缩放比例
self.scrollView.maximumZoomScale = 1.25; // 最大缩放比例
[self.containerView addSubview:self.scrollView];
// 创建 UIImageView 对象,并将传入的 UIImage对象设置为其 image属性
self.imageView = [[UIImageView alloc] initWithImage:self.image];
self.imageView.frame = CGRectMake(0, 0, SCREEN_W, SCREEN_H * 0.9);
[self.scrollView addSubview:self.imageView];
// 设置 UIScrollView的 contentSize 为图片大小
self.scrollView.contentSize = self.containerView.size;
// 启用缩放功能
self.scrollView.userInteractionEnabled = YES;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
// 添加手势识别器
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self actionselector(imageTapped];
[self.imageView addGestureRecognizer:tapGesture];
self.imageView.userInteractionEnabled = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
// 如果是iPhone手机
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsLandscape(orientation)) {
// 如果当前是横屏
self.containerView.transform = CGAffineTransformIdentity;
}else{
// 如果当前是竖屏(顺时针旋转 90 度)
self.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);
self.imageView.frame = CGRectMake(0, 0, SCREEN_W, SCREEN_H * 0.9);
}
}else{
// 如果是iPad 或其它平板装备
self.containerView.transform = CGAffineTransformIdentity;
}
}
- (void)imageTappedUITapGestureRecognizer *)gesture{
// 返回到之前的视图控制器
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollViewUIScrollView *)scrollView {
// 返回要缩放的视图(如果是手机返回containerView 容器,否则返回图片)
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
return self.containerView;
}else{
return self.imageView;
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |