iOS 图片渲染Graphics,ImageIO

iOS 图片渲染Graphics,ImageIO,第1张

相比于总是使用默认的 SRGB 格式的 UIGraphicsBeginImageContextWithOptions 方法,建议我们使用在 iOS 10 引入的 UIGraphicsImageRenderer 类完成绘制任务,它在 iOS 12 中会根据场景自动选择最合适的渲染格式,更加合理地使用内存。UIGraphicsImageRenderer 可以创建 UIImage 对象或者进行 JPEG/PNG 格式的编码

ImageIO 能够在不产生 dirty memory 的情况下读取到尺寸和元信息,其内存损耗等于缩减后的尺寸产生的内存占用

直通车: >

如上图,接口中的为长方形,实际则需要显示为正方形,就需要剪裁返回的数据中的上边部分

//显示的上半部分

//    NSURL url = [NSURL URLWithString:@""];

//    UIImage myimage = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

UIImage myimage = [UIImage imageNamed:@"actor"];

//由于返回的较大,所以先将压缩,再剪裁

NSData data = nil;

if (!UIImagePNGRepresentation(myimage)) {

    data = UIImageJPEGRepresentation(myimage,01);

} else {

    data = UIImagePNGRepresentation(myimage);

}

myimage = [UIImage imageWithData:data];

//首先,获取想要显示的部分的大小及位置

CGSize imgSize = myimagesize;

CGRect rect = CGRectMake(0, 0, imgSizewidth, imgSizewidth);

//然后,将此部分从中剪切出来

CGImageRef imageRef = CGImageCreateWithImageInRect([myimage CGImage], rect);

UIImage image1 = [UIImage imageWithCGImage:imageRef];

//最后,将剪切下来放入UIImageView中

[selfheadImg setImage:image1];

使用系统相册的时候,首先判断是否有权限,没有权限的话,可以d出提示框。

相册监听中的回调方法是在 子线程 中的,因此要改变UI布局的话,必须回到主线程

几个常用的类

PHAsset : 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源。每个PHAsset就是一张的详细信息,包括、位置、时间等。

PHFetchOptions : 获取资源时的参数,可以传 nil,即使用系统默认值。

PHFetchResult : 表示一系列的资源集合,也可以是相册的集合。

PHAssetCollection : 表示一个相册或者一个时刻,或者是一个智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等)。

PHImageManager : 用于处理资源的加载,加载的过程带有缓存处理,可以通过传入一个 PHImageRequestOptions 控制资源的输出尺寸等规格。

PHImageRequestOptions : 如上面所说,控制加载时的一系列参数。

一 App Icon

在设计iOS App Icon时,设计师不需要切圆角,直接矩形就可以。

下面是App Icon需要的尺寸和命名(尺寸和命名不做解释):

尺寸 命名

157x57 px Icon

2114x114 px Icon@2x

340x40 px Icon-40

480x80 px Icon-40@2x

5120x120 px Icon-40@3x

6120x120 px Icon-60@2x

7180x180 px Icon-60@3x

872x72 px Icon-72

9144x144 px Icon-72@2x

1076x76 px Icon-76

11152x152 px Icon-76@2x

1229x29 px Icon-Small

1358x58 px Icon-Small@2x

1487x87 px Icon-Small@3x

1550x50 px Icon-Small-50

16100x100 px Icon-Small-50@2x

二 启动页

下面是启动页需要的尺寸和命名(尺寸和命名不做解释):

尺寸 命名

1320x480 px Default

2640x960 px Default@2x

3640x1136 px Default-568h@2x

4750x1334 px LaunchImage-800-667h@2x

52208x1242 px LaunchImage-800-Landscape-736h@3x

61242x2208 px LaunchImage-800-Portrait-736h@3x

三 App内图标

我会把App内的图标分成四类进行规范设计:第一类顶部栏内的图标;第二类底部导航栏内的图标;第三类内容区域的图标;第四类d窗、浮层内的图标。

1顶部栏内的图标

在设计顶部栏内的图标时应注意,图标的高度不能超过顶部栏高度的一半。以750x1334 px的尺寸为例,顶部栏高度为88 px,图标不能超过顶部栏的一半就是44 px, 但为了页面的美观感与整体性,图标的高度最好与顶部栏标题的字高度保持一直,一般图标的高度控制在32-36 px左右。

2底部导航栏内的图标

底部导航栏内不仅只有图标,一般每个图标下都会有对应的文字,这种情况就比较复杂,因为你需要把图标距上间距、图标与文字间距、文字距下间距等因素考虑进去。图标与文字上下间距一般控制在20 px左右,文字大小在20 px左右,图标与文字间距控制在14 px范围内,最终图标的大小在40-44 px左右。 和顶部栏的原则一样,底部导航栏的图标不能超过其高度的一半,若底部导航栏高度为98 px,图标不要超过48 px, 再加上底部导航栏的文字48 px高的图标也不太合适,所以以我的经验之谈,最佳高度是44 px。

3内容区域的图标

其实仔细研究就会发现,App里的图标分为两种,一种是可点击的,一种是起修饰作用的不能点击的。可点击的图标往往比起修饰作用的图标大。我在做内容区域的图标时为了使整体的App看上去比较统一,图标的大小范围和顶部栏、底部导航栏的图标上下不超过2-4个像素,基本和文字的高度一致。可点击图标范围在32-36 px左右, 不可点击图标范围在24-28 px左右。

上述内容都是我在做App时通过自己的经验和精品的分析得来的,希望会帮助到你。但是有时个别情况也要个别分析,要活学活用。

@2x 为:for iPhone 6/5s/5/4s/4

@3x为:for iPhone6 plus

IOS各型号尺寸

APPIcon

启动设置

命名规范

一个简单的命名规范,作用就不说了~~~~

命名的组成部分:

逻辑板块(可由Tabbar来判断,如果我:My),定位到哪一个页面(personMessage),哪一个功能描述(比如说设置setting),状态(选中,高亮,不可使用,正常状态)

例:my_personMessage_setting_s 表示个人中心选项卡中的个人信息中的设置图标的选中状态。

除此之外,就是对于一下公共的:

这样效果显而易见了,当然在设计目录结构的时候也一定按照相应的层次结构进行设计,千万不要偷懒,放在同一级目录里,版本迭代多了后,你会哭的。

( >

两种缩放:

1缩放到指定大小,也就是指定的`size`

2等比缩放。

缩放到指定大小

-(UIImage)imageCompressWithSimple:(UIImage)imagescaledToSize:(CGSize)size

{

UIGraphicsBeginImageContext(size);

[imagedrawInRect:CGRectMake(0,0,sizewidth,sizeheight)];

UIImagenewImage=UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returnnewImage;

}

等比缩放

通过缩放系数

-(UIImage)imageCompressWithSimple:(UIImage)imagescale:(float)scale

{

CGSizesize=imagesize;

CGFloatwidth=sizewidth;

CGFloatheight=sizeheight;

CGFloatscaledWidth=widthscale;

CGFloatscaledHeight=heightscale;

UIGraphicsBeginImageContext(size);//thiswillcrop

[imagedrawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];

UIImagenewImage=UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returnnewImage;

}

以上就是关于iOS 图片渲染Graphics,ImageIO全部的内容,包括:iOS 图片渲染Graphics,ImageIO、iOS中获取系统相册中的图片、iOS 让imageview显示图片指定部分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9868212.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存