• Sagit.Framework For IOS 自动布局教程:13、UIImage、UIImageView 图片压缩、(长按)保存、缩放、(列表)放大浏览、生成验证码。


    前言:

    本篇介绍UIImage、UIImageView 元素的常用功能用法。

    1、UIImage 特殊用法:图片压缩、图片保存相册、图片缩放、返回图片数据。

    基本定义:

    @interface UIImage(ST)
    //!为每个UI都扩展有一个name
    @property (nonatomic,copy) NSString* name;
    typedef void (^AfterImageSave)(NSError *err);
    @property (nonatomic,copy) AfterImageSave afterImageSaveBlock;
    //!获取图片压缩后的字节数据,当前图片不受变化
    -(NSData*)compress:(NSInteger)maxKb;
    -(void)save:(AfterImageSave)afterSave;
    //!检测最大宽高的等比缩放
    -(UIImage *)reSize:(CGSize)maxSize;
    -(NSData*)data;
    @end

    2、UIImageView 特殊用法:图片长按保存事件、保存相册事件、圆角、缩放、选择图片库(单选)、网址加载图片。

    基本定义

    @interface UIImageView(ST)<UIImagePickerControllerDelegate>
    
    typedef void (^OnPick)(NSData *data,UIImagePickerController *picker,NSDictionary<NSString *,id> *info);
    //typedef void (^AfterSetImageUrl)(UIImageView* img);
    //!长按时提示用户保存图片
    -(UIImageView*)longPressSave:(BOOL)yesNo;
    //!执行保存图片事件
    -(UIImageView*)save;
    //!设置图片是否圆角
    -(UIImageView*)corner:(BOOL)yesNo;
    //!获取图片的地址
    -(NSString*)url;
    //!为图片设置一个网络地址 (默认超过256K时会进行压缩)
    -(UIImageView*)url:(NSString*)url;
    //!为图片设置一个网络地址 (默认超过256K时会进行压缩)afterSet为设置后的回调函数
    //-(UIImageView *)url:(NSString *)url after:(AfterSetImageUrl)block;
    //!为图片设置一个网络地址 (默认超过256K时会进行压缩)default:设置一张默认图片
    -(UIImageView *)url:(NSString *)url default:(id)imgOrName;
    //!为图片设置一个网络地址 maxKb 指定超过大小时压缩显示(设置为0不压缩)
    //-(UIImageView *)url:(NSString *)url maxKb:(NSInteger)compress;
    //!为图片设置一个网络地址 (默认超过256K时会进行压缩) maxKb 指定超过大小时压缩显示(设置为0不压缩) default:设置一张默认图片
    -(UIImageView *)url:(NSString *)url  default:(id)imgOrName maxKb:(NSInteger)compress;
    //!为图片设置一个网络地址 (默认超过256K时会进行压缩) maxKb 指定超过大小时压缩显示(设置为0不压缩) default:设置一张默认图片 afterSet为设置后的回调函数
    //-(UIImageView *)url:(NSString *)url maxKb:(NSInteger)compress default:(id)imgOrName after:(AfterSetImageUrl)block;
    //!图片选择 edit:是否出现裁剪框
    -(UIImageView*)pick:(OnPick)pick edit:(BOOL)yesNo;
    //!图片选择 edit:是否出现裁剪框 maxKb:指定压缩的大小
    -(UIImageView*)pick:(OnPick)pick edit:(BOOL)yesNo maxKb:(NSInteger)maxKb;
    
    //!将图片压缩到指定的宽高,当前图片受变化
    -(UIImageView*)reSize:(CGSize)maxSize;

     新增的功能:

    #pragma mark 浏览查看大图、(去掉第3方图片查看)
    //!双击切换放大查看
    -(void)zoom;
    -(UIImageView *)zoom:(BOOL)yesNo;
    //!点击发大查看
    -(void)show;
    -(UIImageView *)show:(BOOL)yesNo;
    +(void)show:(NSInteger)startIndex images:(id)imgOrNameOrArray,...NS_REQUIRES_NIL_TERMINATION;

    3、使用示例

    这是内部弹出图片的实现功能,刚好用到了不少图片功能,当为示例也行:

    +(void)show:(NSInteger)startIndex images:(id)imgOrNameOrArray, ...
    {
        if(imgOrNameOrArray==nil){return;}
        [Sagit.MsgBox dialog:^(UIView *winView) {
            [[[winView addScrollView:nil direction:X]  addImages:imgOrNameOrArray, nil]block:^(UIScrollView* scrollView) {
                [scrollView setPagerIndex:startIndex];
                [[scrollView showPager:YES] backgroundColor:ColorBlack];
                scrollView.onPrePager = ^(UIScrollView *scrollView) {
    
                };
                scrollView.onNextPager = ^(UIScrollView *scrollView) {
                    
                };
                for (int i=0; i<scrollView.subviews.count; i++) {
                    UIImageView *imgView=(UIImageView*)scrollView.subviews[i];
                    [[imgView longPressSave:YES] zoom:YES];
                    [imgView onClick:^(id view) {
                        [[winView hidden:YES] click];
                    }];
                }
            }];
        }];
    }

     示例2:

    [imgView onClick:^(UIView *view)
                {
                    NSMutableArray *array=[NSMutableArray new];
                    for (PersonalPhoto *item in photos) {
                        [array addObject:item.BigPhotoPath];
                    }
                    [UIImageView show:i images:array, nil];
                }];

    效果:

     4、生成验证码:[可指定背景色或字体颜色]

    定义:

    #pragma mark 本地验证码
    -(NSString*)VerifyCode;
    //!生成指定长度验证码(随机背景色)。
    -(UIImageView*)VerifyCode:(NSInteger)length;
    //!生成指定长度验证码(指定背景色,随机字体颜色)。
    -(UIImageView*)VerifyCode:(NSInteger)length fixBgColor:(UIColor*)fixBgColor;
    //!生成指定长度验证码(指定背景色,指定字体颜色)。
    -(UIImageView *)VerifyCode:(NSInteger)length fixBgColor:(UIColor *)fixBgColor fixFontColor:(UIColor *)fixFontColor;

    示例代码:

    [[[[sagit addImageView:@“imgCode”] 300 height:100] layerCornerRadius:30] .asImageView VerifyCode:4] toCenter];

    图片:

     获取验证码:

    NSString *code=STImageView("imgCode").VerifyCode;
  • 相关阅读:
    杂谈:用 Sublime Text 2 写 ActionScript3
    Sublime写MarkDown实时预览
    Cocos2d-Lua (练手) 微信打飞机
    Lua 性能相关笔记
    Lua 学习笔记(十一)元表与元方法
    Lua 学习笔记(十)数据结构
    Lua 学习笔记(九)协同程序(线程thread)
    Lua 学习笔记(八)错误(error)
    Lua 学习笔记(七)编译、执行外部代码块
    Lua 学习笔记(六)迭代器
  • 原文地址:https://www.cnblogs.com/cyq1162/p/13509172.html
Copyright © 2020-2023  润新知