ios实现点击按钮展示图片并根据装备为iPhone 还是 iPad决定旋转图片 ...

打印 上一主题 下一主题

主题 738|帖子 738|积分 2214

一.概述

        由于功能需求,需要在手机上通点击按钮来展示图片,并支持对图片进行缩放.但手机是竖屏的,图片展示效果可能不太理想,我就计划将图片变为横屏(旋转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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表