首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS:聊一聊UIImage几点知识

    然我们再深入一点儿为什么不直接加载到成二倍的尺寸呢,原因很简单因为我们在界面布局中逻辑坐标系中的(单位是point),而实际的绘制都是在设备坐标系(单位是pixel)进行的,系统会自动帮我们完成从point到pixel...二、UIImage的几种初始化方法的对比 1、imageNamed:方法 imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些。它的加载流程如下: a....我们在日常使用中经常会碰到把iPhone相册中的照片导入到windows中,发现方向不对的问题就是与这个属性有关,因为导出照片的时候,写exif中的方向信息时候没有考虑该方向的原因。...四、UIImage的几个draw方法 UIImage的几个draw方法是用来绘制图像的利器,为什么这样说呢?...由于图像是绘制在当前context中的,它同时还会考虑到当前context的transform的变化。利于这两点我们就可以玩转图像的旋转和翻转了。

    1.6K20

    iOS中图片(UIImage)拉伸技巧 原

    2、像素点的拉伸 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger...)topCapHeight; 这个函数我们可以用来拉伸类似QQ,微信的聊天气泡背景图,它的两个参数分别leftCapWidth和topCapHeight,这两个参数给定一个坐标,比如:     UIImage... * img= [UIImage imageNamed:@"11.png"];     img = [img stretchableImageWithLeftCapWidth:1 topCapHeight...有一点需要注意,这个方法默认使用的拉伸模式是区域复制,比如还是上面的图案,如下代码拉伸:     UIImage * img= [UIImage imageNamed:@"11.png"];     img...确实,能绘图画出来的最细的实心线确实是一像素,但在一个项目中,我们优秀的美工察觉到无论她把线做的多么细,无论我怎样控制拉伸方法,绘制出的登录框总是没有QQ的细,QQ的框线看起来更加干脆利索。

    4K20

    IOS 列表性能优化-图片解码性能优化

    只不过 PNG 图片是无损压缩,并且支持 alpha 通道,而 JPEG 图片则是有损压缩,可以指定 0-100% 的压缩比,因此,在将磁盘中的图片渲染到屏幕之前,必须先要得到图片的原始像素数据,才能执行后续的绘制操作...一种是: UIImage imageNamed:imageName 一种是: UIImage imageWithContentsOfFile:path 后面我再解释为什么需要对比这两种加载方式,...1>使用UIImage imageWithContentsOfFile:path image.png 2>使用UIImage imageNamed:imageName image.png 两种方式都实际滑动一分钟..., 可以清晰的看到,两种加载方式一开始都帧数很低,但是使用imageNamed: 的很快帧数就恢复到60帧,但是使用imageWithContentsOfFile:会一直卡顿,那是因为使用imageNamed...再来解释我们使用的两种加载方式,使用 imageWithContentsOfFile: 实际上是模拟网络下载图片到本地后,再从本地加载展示图片的过程,imageNamed:方式则是模拟从Assets.xcassets

    2.2K00

    iOS生成的对象释放时机

    使用imageNamed这个方法生成的UIImage对象,会在应用的bundle中寻找图片,如果找到,则Cache到系统缓存中,作为内存的cache,而程序员是无法操作cache的,只能由系统自动处理,...由此看来[UIImage imageNamed:]只适合与UI界面中小的贴图的读取,而一些比较大的资源文件应该尽量避免使用这个接口[UIImage imageWithContentsOfFile]解决掉这个问题...for (int i = 0; i < 1000; i++) { UIImage* image = [UIImage imageNamed:@"some_image"]; // 对 image...而在每一次循环结束的时候,UIImage 引用都为0了,不过系统不会把它立即释放掉;循环次数多了内存就爆掉了。...为了解决这个问题,可以改成这样: for (int i = 0; i < 1000; i++) { @autoreleasepool { UIImage* image = [UIImage

    1.6K20

    iOS复习中有关SDWebImage可能知识点总结(2)

    下载之前先查询缓存,没有就下载并在下载后保存图片到缓存。 (1)....保存图片到缓存 的内部API - (void)storeImage:(nullable UIImage *)image imageData:(nullable NSData *)imageData...内部API + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image { 调用位置1 -- SDWebImageDownloaderOperation.m...实现原理 -- SDWebImageDecoder.m + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image {...loadImageWithURL开头的,负责加载的,加载load这个词跟下载download不同,比它更广,加载负责管理下载之前的操作: 管理下载操作的开始和取消 下载之前查询图片的内存缓存和磁盘缓存 下载之后保存图片到内存缓存和磁盘缓存

    97510

    常用开发技巧系列(三)

    它所说的问题,因为项目是原生的能想到的只有第三方SDK会用,上网查了一下而又涉及到这个的SDK我自己用的也只有个推!...Unable to satisfy the following requirements: image.png 这个你在cd到项目文件,终端执行   pod update --verbose  就可以解决...第二种:这种警告就和SVN或者Git就没有什么关系了    比如下面的注释时候的警告,反正我知道环信SDK的确是一堆中文注释完了之后再加一堆的英文注释,这个到可以理解,毕竟是要走向世界的!...:(NSInteger)topCapHeight __TVOS_PROHIBITED - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets...UIImage * image1 = [UIImage imageNamed:@"image"]; UIImageView * imageView1 = [[UIImageView alloc]

    92950

    番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起

    不行,我得去看看.一行一行,看代码,从天黑到天亮,从期待到绝望...其实,稍微有一些对比实验常识的人,都很容易猜到: 两种情况,唯一的变量是 图片素材本身,那 最可能 的原因肯定是 图片本身的问题.一种高大上的说法...你可能会想,是UIImage加载的问题吧?那就研究下UIImage渲染机制吧.然后1天过去了,等你学成归来,蓦然发现 PHImageManager 是一个系统方法,它加载的图片机制,你无力干涉!...回到问题本身,用一句概括就是:永远不要直接传递UIImage对象.在需要传递UIImage的场景中,请使用图片名或者NSData二进制对代替....无法直接以UIImage格式,连续在轮播图上显示九张图 此处对应的是一个本地大图预览功能,实现是在前一个页面把九张本地图的UIImage传递给轮播预览组件.此处的坑是: 把一个存放在 数组中的UIImage...对象传递给 UIImageView的 image属性,当UIImageView加载到父视图时,会引起巨额的内存占用.原因初步猜测是 UIImage 对象显示到 UIImageView 会有一个特殊的耗费内存的操作

    2.1K70

    图片资源以压缩包的形式放到服务端,在应用程序启动的时候批量下载

    ,且有7个地方会同时显示该图片 如果我们采用imageWithContentsOfFile:这种方式加载图片,那么在上面的场景下,就会占用5*7=35kb内存;而且会涉及到多次的IO操作,这是很耗性能的...可是如果是使用imageNamed:方式加载图片的话,由于全部取自字典缓存中的UIImage,这样无论有几处显示图片,都只会占用5*1=5kb内存;而且同一张图片资源最多只会涉及到一次IO操作。...NSData,当UIImage的引用计数变为0的时候自动销毁UIImage(这就是一次IO操作)。...而一个页面中各种大大小小的图标少则十几、二十个,多则上百个,也就是说,每打开一个页面就会涉及到几十上百次的图片IO操作,这会占用大量的CPU和内存资源,极有可能影响到用户界面流畅度,进而降低用户体验。...(3)增加开发时间 接着上面第(2)点,如果只是简单粗暴使用UIImage(contentsOfFile: "")这种方式来将图片加载出来,那么就会涉及到大量的IO操作,进而影响用户体验。

    36010
    领券