首页
学习
活动
专区
圈层
工具
发布

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

iOS中图片拉伸技巧与方法总结 一、了解几个图像拉伸的函数和方法 1、直接拉伸法 简单暴力,却是最最常用的方法,直接将图片设置为ImageView的image属性,图片便会随UIImageView对象的大小做自动拉伸...2、像素点的拉伸 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger...有一点需要注意,这个方法默认使用的拉伸模式是区域复制,比如还是上面的图案,如下代码拉伸:     UIImage * img= [UIImage imageNamed:@"11.png"];     img...    UIImageResizingModeStretch,//进行渐变复制模式拉伸 }; 现在就明了了,我们只需要设置一下模式,就可以实现渐变拉伸了:     UIImage * img= [UIImage...二、拉伸的用武之地 圆角按钮,空心按钮,渐变的背景,内容可变的标签,聊天气泡等等这样的素材在APP中很可能会多次出现,并且每次出现的尺寸可能还会略微有些差异,如果仅仅依靠美工的素材,恐怕不仅很难达到要求

4.1K20

常用开发技巧系列(三)

警告继续:     在Xcode中,警告这个东西还是很烦人的!下面简单的说两个消除警告的技巧!     第一:加入你使用SVN或者Git在管理代码,这当中你要是删除了一些你创建了又觉得没用的文件。...图片的拉伸处理:     先说一个最常见的我们经常会见到的聊天的时候消息显示框:     在我们经常用到拉伸中,你经常看到的imageView.image属性,这里面的image是根据imageView...NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode */ 我们一个一个说说,第一个方法我们经常用到在聊天消息框的拉伸...UIImage * image1 = [UIImage imageNamed:@"image"]; UIImageView * imageView1 = [[UIImageView alloc]...* image1 = [UIImage imageNamed:@"image"]; UIImageView * imageView1 = [[UIImageView alloc]initWithImage

94350
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS设置图片拉伸不变形区域引实现方法结

    引 在开发中,我们可能会遇到这种情况:设计做了一张图,比如是按钮或文本条的背景,但由于文字长度不一,因此按钮或者文本条大小也会变化,如果直接设为背景,那么势必导致图片被拉伸,如果是整体图片还没什么,但如果是一些特殊的图片...实现方法 iOS提供了简单的方法来设置不被拉伸的区域,是以图片原本大小上对应区域来设置的,方法为: - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets...); 也就是说,在我们引言的例子中,我们就需要设置距离右边界和下边界一定距离,确保包含打钩部分,使其不被拉伸。...上面的方法中第二个参数表示拉伸的模式: UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片 UIImageResizingModeTile...:unHandleImg]; // 处理区域拉伸的图片 UIImageView *handleImg = [[UIImageView alloc] initWithFrame:

    1.8K20

    【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

    可拉伸图片 (1) 可拉伸图片用法 可拉伸图片作用 : 在上述进度条中, 设置的 progressImage 和 trackImage 必须是可拉伸图片; (2) 可拉伸图片创建 创建可拉伸图片 : 使用...UIImage 创建 可拉伸图片, 通过 UIEdgeInsets 结构体定义图片拉伸区域; -- UIEdgeInsets 结构体 : 包括 left, top, right, bottom 四个值...定制进度条示例 (1) 相关 API 简介  相关 API 简介 :  -- 创建可拉伸的 UIImage :  UIImage * trackImage = [[UIImage imageNamed...//创建 可拉伸的图片, 平铺样式 UIImage * trackImage = [[UIImage imageNamed:@"Snip20151210_139.png"] resizableImageWithCapInsets...//创建 可拉伸的图片, 平铺样式 UIImage * trackImage = [[UIImage imageNamed:@"Snip20151210_139.png"] resizableImageWithCapInsets

    4.5K40

    Swift-图像的性能优化

    的生成是由Core Animation被强制生成一些图片,然后发送到渲染服务器,而不是简单的指向原始指针 这个选项把这些图片渲染成蓝色 复制图片对内存和CPU使用来说都是一项非常昂贵的操作,所以应该尽可能的避免...如果图片显示在一个Cell上面,滚出屏幕再滚动回来的时候,图片仍然需要重新被设置,在进入屏幕之前还需要一次拉伸操作,这些拉伸的操作是会消耗CPU的计算的。这样的设置多了以后就会严重影响性能。...= UIImage(named: "avatar_default") let imageView01 = UIImageView(frame: CGRect(x: 100, y: 100, width...结果如图所示 事实证明,如果图像尺寸和ImageView尺寸不一致,图像就一定会被拉伸,只要被拉伸,CPU就会工作,如果是在cell上,每次cell离开屏幕再回到屏幕的时候,都会对图片进行拉伸处理。...() let image = UIImage(named: "avatar_default") let imageView01 = UIImageView(frame

    2.3K70

    UIImageView圆角,教你远离cornerRadius

    当然这些效果不会直接显示在屏幕上,可以使用Instruments的CoreAnimation检测,当然你也可以自己写一个检测帧频的方法。 那如何高效的为UIImageView创建圆角?...修改image为圆角图片 图片进行了切角处理后,将得到的含圆角UIImage通过setImage传给了UIImageView。操作没有触发GPU离屏渲染,过程在CPU内完成。...*/ - (void)zy_cornerRadiusWithImage:(UIImage *)image cornerRadius:(CGFloat)cornerRadius rectCornerType...做法的原理是手动画出圆角的image,在UIView上增加一层UIImageView,将image赋值给UIImageView。...当然,简单的做法是设计的美工自己做一张带有圆角效果的图片,根据大小拉伸。这样的一个好处是以防美工随意更改圆角的角度?

    2.6K40

    iOS使用xcode可视化图像编辑功能进行图片拉伸

    iOS中可视化拉伸图片技巧 一、补充 在我的另一篇博客http://my.oschina.net/u/2340880/blog/403996中探讨了IOS拉伸图像(UIImage)的几种方法和一些小经验...,这篇是一个补充,再将xcode中的另一种可视化拉伸图像的方法的使用介绍给大家。...创建一个AssetCatalogs:在xcode中新建一个文件,选择AssetCatalogs,如下: ? 然后我们点开这个包,将图片直接拖入工具区即可: ?...2、使用AssetCatalogs中的可视化工具进行图片拉伸 完成了上面的步骤之后,我们可以对管理的图片进行处理,点击右下角的show Slicing按钮,我们就会进入可视化编辑区,如下: ?...3、在xib文件中UIImage的拉伸 在xib文件中的UIImageView,在上面加上图片后,可以设置stretching这个属性: ?

    2.1K20

    iOS 开发仿网易云音乐歌词海报

    设计思路: 解析歌词文件,在界面上用UITableView加载 长按界面,将UITableView切换至可编辑状态 将选中的歌词保存 根据歌词的数量在UIImageView上动态创建UILabel 将UIImageView...上面我们只是将歌词文件转化为数据存储到了我们的内存中,接下来要把这些数据显示给用户,这里我们就要用到UITableView这个强大的控件了....,在iOS 5.0之前,我们用此API进行对图片的拉伸: - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight...但这个API在iOS 5之后就被废弃了,在这里我们该用它iOS 6以后新出的API对图进行拉伸: - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets...,于是就把这个思路给pass了;后来经过仔细分析,通过在UIImageView中添加subView也就是UILabel,然后通过以下代码生成的海报达到的效果令人满意,代码如下: 最终的效果图如下:

    85930

    图层树和寄宿图 -- iOS Core Animation 系列一

    视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS中,所有的视图都是从UIView这个基类派生出来的。...1.3 平行的层级关系 每个UIView都对应着一个CALayer,视图的职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除的时候,他们对应的图层也同样的在对应的层级关系树中有相同的操作...因为CGImage和UIImage不一样,它没有拉伸的感念。用UIImage读取图片时,读取了高质量的Retina图片。...这种情况下,最外面的像素会被拉伸。 contentsRect在 App 中最有趣的地方可以用作 image sprites(图片拼合)。...这是因为我们在CALayerDelegate方法中,没有对超出边界歪的内容提供绘制支持。 除非创建一个单独的图层,我们平时基本不会用到CALayerDelegate。

    1.7K20

    iOS的GIF动画效果实现

    本文选自《iOS动画——核心技术与案例实战》 GIF在iOS中的使用场景 GIF在iOS中的使用场景有以下三个方面。 (1)GIF图片分解为单帧图片。 (2)一系列单帧图片合成GIF图片。...(3)获取ImageIO的输出数据:UIImage。 (4)将获取到的UIImage数据存储为JPG或者PNG格式保存到本地。 在整个GIF图片分解的过程中,ImageIO是处理过程的核心部分。...通过这个方法就可以在某种手机分辨率下构建指定方向的图像,当然图像的类型是UIImage类型。...第2行到第5行通过for循环将67张图片依次加载到当前数组中。第6行实例化一个UIImageView实例对象。...第7行和第8行设置UIImageView实例对象的frame位置属性以及图片的拉伸方式,这里设置为居中显示。第9行将UIImageView添加到self.view图层上。

    2.1K20

    iOS 应用瘦身方法思路整理

    在调研过程中我们还发现,应用的体积与图片资源的数量密切相关(听起来好像是废话)。...使用字体文件会避免这个问题,而且不必导入 @2x 和 @3x 图片,一套字体文件就能保证 UI 的清晰度。...framework 中可以存放资源,但是 .a 却不可以,因此生成 .a 的 pod 下的资源会被转移到 main bundle 下,这为资源冲突造成了隐患,为了避免这种冲突我们之前采用的使用 bundle...换句话说如何才能低成本的将现在项目中的图片放到特定 bundle下的 Assets.car 文件中呢? 对此我们提出了一个解决方案: 1. 在 pod 下新建一个空文件夹。...UIImageView在initWithCoder:的时候设置回调 在 hook 到的 decodeObjectForKey: 方法中将图片名称回传给 initWithDecoder: 方法: ?

    1.4K20

    Objective-C实现链式编程语法(DSL)

    报错 DSL_image这个东西在UIView中找不到,为什么是UIView呢?明明我们创建的是一个UIImageView。...原因很简单,因为我们的DSL_frame是在UIView的category中声明并实现的,更要命的是,UIView(DSL)中声明的DSL_frame这个方法返回的block的返回值是一个UIView对象...: - (UIView* (^)(CGRect))DSL_frame;, 针对于这个问题,目前笔者只想到一种解决方法:把在UIView(DSL)中声明的方法拷贝一份到UIImageView(DSL)....最终的UIImageView(DSL)头文件 如下: @interface UIImageView (DSL) #pragma mark - UIView /// 这些是在UIView(DSL)中拷贝过来的方法...(UIColor *))DSL_TintColor; @end 而UIImageView(DSL).m实现文件中不需要再实现DSL_frame和DSL_backgroundColor这两个方法,因为已经在

    8.4K20

    AlamofireImage 源码阅读

    UI控件设置图片的方法,我挑其中一个来详解AlamofireImage是怎样将图片加载到视图上的 // 该方法是UIImageView的一个扩展方法,其它控件的扩展方法都差不多一样 public func...(多个view同时加载同一张图片的情况) // 注:ImageDownloader在responseHandlers属性中,存储正在下载的请求,以防止相同的请求多次发出,...,如果有则返回图片 2.在NSURLCache中获取缓存(内存缓存+磁盘缓存),如果有则返回图片 3.开始网络下载图片,成功后返回图片 4.缓存图片 5.检查是否使用滤镜、加载动画等加载图片 二...return { image in return image.af_imageScaled(to: self.size) } } } /// 拉伸适应...return { image in return image.af_imageAspectScaled(toFit: self.size) } } } /// 拉伸铺满

    1.7K60

    从0使用Kuikly框架写一个小红书Demo-Day7

    通过Kuikly的拓展能力在ios平台实现自定义的图片加载和缓存我们以iOS平台为例,体验Kuikly框架强大的拓展能力首先看看Kuiklydemo是怎么在iOS原生层面实现图片加载与缓存的:打开目录:...这种设计哲学体现了现代软件架构中的几个重要原则:开闭原则(对扩展开放,对修改封闭)、依赖倒置原则(高层模块不依赖低层模块,都依赖于抽象)以及单一职责原则(每个组件只负责一个特定的功能)。...具体实现上,扩展处理器类在+load方法中自动向KuiklyRenderBridge桥接管理器注册自己,框架在运行时通过单例模式管理这些扩展处理器。...(内存+磁盘)*@paramimage要缓存的图片*@paramkey缓存键值*@paramcompletion存储完成回调,在主线程执行*/-(void)storeImage:(UIImage*)imageforKey...@property(nonatomic,strong)NSDate*lastCleanupTime;//上次清理时间,避免频繁清理@end7.2.2下载器设计采用单例模式管理NSURLSession,通过任务合并机制避免重复下载相同

    20510

    《Motion Design for iOS》(三十六)

    这里是在添加动画前的样子。 但等一下,我们并不想要在第一次进入的看到这样的界面。这次练习的目的在于让每个元素都动画到它们的位置上,也就是说它们不应该立即出现在它们的最终位置。...持续时间是动画完成需要的时间,而阻尼是iOS 7在UIView动画方法中提供的一个弹簧属性,用来控制弹簧的弹力。...iOS 7的基于block的动画中的damping值实际上是一个解释值,这意味着苹果无论获取到你输入的什么值,都会做一些复杂的计算来操作这个值并将其放入弹簧动作方程式中。...而在实际的弹簧动作方程中,动作的时间(它到达平衡点或者最终位置的时间)是由弹簧的其他属性决定的,它不是你去设置然后强制弹簧遵循的。...苹果的动画方法有一个你需要设置的持续时间,所以你在以一种并非完全遵循物理法则管理下的弹簧动作。

    73120
    领券