iOS,Objective-C,相册功能的实现。

简介: #import "ViewController.h" #define kuan [UIScreen mainScreen].bounds.size.width #define gao [UIScreen mainScreen].
#import "ViewController.h"

#define kuan [UIScreen mainScreen].bounds.size.width
#define gao [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *huaKuang;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //设置contentSize
    _huaKuang.contentSize=CGSizeMake((kuan)*4, gao);
    _huaKuang.backgroundColor=[UIColor blackColor];
    //设置分页
    _huaKuang.pagingEnabled=YES;
    //隐藏滚动条
    //滚动时是否显示水平滚动条
    _huaKuang.showsHorizontalScrollIndicator=NO;
    //滚动时是否显示垂直滚动条
    _huaKuang.showsVerticalScrollIndicator=NO;
    //设置代理,需要遵循代理协议<UIScrollViewDelegate>,写在@interface ViewController ()的后面
    _huaKuang.delegate=self;
    //添加子视图,因为是多个所以写了一个方法来实现添加
    [self tianJianZiShiTu];
}
-(void)tianJianZiShiTu
{
    //假如有六个图片,就要创建六个UIScrollView和六个UIImageView,并且找到六个图片
    for(int i=0;i<3;i++)
    {
        //创建UIScrollView
        //为了区分开不同的照片加一个20黑边,需要设置ScrollViewscroll View中的Left和View中的Width
        UIScrollView *uisv=[[UIScrollView alloc] initWithFrame:CGRectMake((kuan+20)*i, 0, kuan, gao)];
        //把创建完成的添加到总的那个UIScrollView上
        [_huaKuang addSubview:uisv];
        //创建UIImageView
        UIImageView *uiiv=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kuan, gao)];
        //把创建的UIImageView添加到UIScrollView中
        [uisv addSubview:uiiv];
        //设置UIImageView的图片
         NSString *imageName = [NSString stringWithFormat:@"new_feature_%d",i + 1];
        uiiv.image=[UIImage imageNamed:imageName];
        //设置tag值
        uiiv.tag=1000;
        //设置UIScrollView的代理
        uisv.delegate=self;
        //设置缩放范围
        uisv.minimumZoomScale=0.5;
        uisv.maximumZoomScale=1.5;
        //定义点击事件
        UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dianJiShiJian:)];
        //设置有效点击数(就是双击)
        tap.numberOfTapsRequired=2;
        //添加到UIScrollView中
        [uisv addGestureRecognizer:tap];
    }
}
-(void)dianJiShiJian:(UITapGestureRecognizer *)tap
{
    //获取点击事件的view
    UIScrollView *uisv1=(UIScrollView *)tap.view;
    if(uisv1.zoomScale!=1.0)
   {
       [uisv1 setZoomScale:1.0 animated:YES];
       return ;
   }
    CGPoint location=[tap locationInView:tap.view];
    CGRect rect=CGRectMake(location.x-100, location.y-100, 200, 200);
    [uisv1 zoomToRect:rect animated:YES];
}
//指定缩放的视图
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    if (scrollView == _huaKuang) {
        return nil;
    }
    UIImageView *imageView = (UIImageView *)[scrollView viewWithTag:1000];
    return imageView;
}

//滚动结束,把所有的缩放视图的缩放比例置为1.0
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    if (scrollView == _huaKuang) {
        for (id obj in _huaKuang.subviews) {
            if ([obj isKindOfClass:[UIScrollView class]]) {
                UIScrollView *scaleSC = (UIScrollView *)obj;
                scaleSC.zoomScale = 1.0;
            }
        }
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

  

相关文章
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
320 1
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
819 2
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
340 0
|
10月前
|
监控 搜索推荐 数据安全/隐私保护
深入探索iOS 14的隐私保护功能
本文将深入探讨iOS 14操作系统中的隐私保护功能,包括新的隐私指示器、应用程序跟踪透明度以及增强的隐私设置。我们将分析这些功能如何提高用户对个人数据的控制权,并讨论它们对应用开发者和广告行业的影响。
320 28
|
10月前
|
存储 安全 数据安全/隐私保护
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
528 3
|
12月前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
369 3
|
设计模式 前端开发 Swift
探索iOS开发:Swift与Objective-C的较量
在这篇文章中,我们将深入探讨iOS开发的两大编程语言——Swift与Objective-C。我们将分析这两种语言的特性、优势和局限性,并讨论它们在现代iOS开发中的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和建议。
255 3
|
人工智能 搜索推荐 iOS开发
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,探索iOS 18 Beta 4新功能与改进: CarPlay壁纸、iCloud设置访问优化、相机控制记忆、隐藏文件夹设计变更、深色/浅色模式图标同步、股票应用图标调整、iPhone镜像功能增强、控制中心蓝牙切换键、AssistiveTouch新增Type to Siri等,以及Apple Intelligence暗示。开发者可通过苹果计划提前体验。
275 12
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
112 0
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
186 0
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错