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

2年前 (2022) 程序员胖胖胖虎阿
312 0 0

前言:

本篇介绍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];
            }];

效果:

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

 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”] width:300 height:100] layerCornerRadius:30] .asImageView VerifyCode:4] toCenter];

图片:

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

 

 获取验证码:

NSString *code=STImageView("imgCode").VerifyCode;

 

相关文章

暂无评论

暂无评论...