UIButton和UIImageView中Image拉伸效果的实现

iOS UIImageView的contentMode属性【Swift版】 今天小编遇到一个Bug,就是图片被自动拉升了,就比如这样的一张宽的图片,iOS会自动拉升的到适配UIImageView尺寸的。一开始忘记了UIImageView有contentMode属性。百思不得其解。后来。。。。。(就是我太菜) 来波总结【文后有惊喜】 public enum ContentMode : Int { case scaleToFill = 0 //默认 case scaleAspectFit = 1 // 内容缩放以适应固定的方面。其余部分是透明的 阅读详情

UIImageView中Image拉伸效果的实现:


    UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];
    [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)];
    CGRect frame = strechTest.frame;
    frame.size.width += 100;
    strechTest.frame = frame;

 

但是虽然UIButton和UIImageView都是继承于UIView,但是二者实现方式不同,UIImageView没有subView,它的content就是image,UIBotton不同,the way it works is a private implementation detail。

因此UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种:

第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下:

UIImage *image = [UIImage imageNamed:@"image.png"]; 

image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(image.size.height/2)];

image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(image.size.height/2)];

设置了左端帽之后,rightCapWidth = image.size.width - (image.leftCapWidth + 1); 也就是说图片中间的一像素用来拉伸。垂直方向同上。

设置之后无论把image放到什么控件中都可以自动拉伸了。

第二种方法是在UIButton中加入一个UIImageView,拉伸imageView,然后将button的背景设为clearColor等等。把imageView放入button中,并且sendToBack,得到效果。

代码如下:

//刚才imageView拉伸的代码

    UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];
    [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)];
    CGRect frame = strechTest.frame;
    frame.size.width += 100;
    strechTest.frame = frame;

//把imageView放入button中,并设置为back


    [temp_button addSubview:backgroundImageView];
    [temp_button sendSubviewToBack:backgroundImageView];
    [temp_button setBackgroundColor:[UIColor clearColor]];

 

button不能设置背景图片,这样就可以实现拉伸的图片作为背景并且背景上可以放置title。

iOS UIImageView图片自动拉伸功能 主要介绍了iOS UIImageView图片自动拉伸功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

相关推荐

AutoDock Vina实战:从零开始完成分子对接(附7VU6案例详解)

本文提供了一份详细的AutoDock Vina分子对接实战指南,以SARS-CoV-2 3CL蛋白酶(PDB ID: 7VU6)为例,从零开始手把手教学。内容涵盖软件安装、环境配置、受体与配体文件准备、对接参数设置,以及结果分析与可视化解读,旨在帮助计算生物学与药物发现领域的新手快速掌握这一核心技能。

ooo22的博客 537

oc 图片九宫格拉伸

UIImageView *ImageView=[[UIImageView alloc]init];[ ImageView  setFrame:CGRectMake(126.0, 80.2, 30.0, 20.0)];   UIEdgeInsets ed = {0.0f, 10.0f, 0.0f, 10.0f};   [ImageView setImage:[[UIImage imageNamed:

u013406800的专栏 629

Win10系统下Protel 99 SE元件库导入报错?3步搞定File is not recognized问题

本文详细介绍了在Win10系统下解决Protel 99 SE元件库导入报错'File is not recognized'的3步终极方案。通过手动修改配置文件、使用专用工具和优化系统兼容性设置,帮助用户快速解决这一经典PCB设计软件的兼容性问题,提升工作效率。

m3n5b7v8c9x的博客 796

iOS UIimage拉伸的三种方法

第一种方法 //用到image的这个方法- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight    //leftCapWidth:左边不拉伸区域   //topCapHeight:上面不拉伸区域 UIImage *image =[

柏灿的博客 1万+

vc mfc listctrl使用虚拟列表 虚拟列表用法

note 虚拟列表可有效加载大量数据 需要处理listctrl的 LVN_GETDISPINFO 消息 使用虚拟列表 不能 使用 insert的方法插入数据,而是告诉listctrl 当前要显示多少行 使用SetItemCount函数告诉listctrl当前显示多少行 使用虚拟列表需要自己维护数据源 使用 添加list ctrl 控件 将其Owner Data 属性 设置为 True 添加...

知其所以然 398

绝缘检测原理和绝缘电阻计算方法

绝缘检测的目的就是计算绝缘电阻,当绝缘电阻低于某个阈值,则很可能会造成电池短路、漏电,威胁人员安全

m0_56208280的博客 4万+

iOS:UIButton图片image不被拉伸(ContentMode)

有时使用UIButton即想美观又想简便,因此可以用以下方式既能shi

Sparta-301 3万+

【论文+CAD图纸】光储充一体化微电网设计

近些年来,我国的经济发展迅速,对能源的需求不断增长,也加重了对环境的破坏,违背了我国的可持续发展战略。所以迫切需要寻找新型能源。由于太阳能在使用时不会产生污染,所以太阳能逐渐受到人们的重视。我国的太阳能资源丰富,具有的开发利用潜力。特别是近些年“光储充”一体化充电站为高科技绿色充电模式,“以光养桩”使光伏、储能、智能充电协同,智能微电网与公共电网互动,本设计对探索清洁可再生能源在民用场合的应用,有着重大的理论和工程价值。本文综述国内外相关光伏发电的成果和发展现状;

weixin_761237174的博客 926

UIButton图片拉伸方法(很多需要按钮的地方我们只需要一张小图来进行缩放)...

系统提供3种方法来满足不同的需求(直接上代码): #import <UIKit/UIKit.h> @interface UIImage (Common) /** * 根据图片名返回一张能自由拉伸的图片(图片缩放) */ + (UIImage *)resizedImage:(NSString *)name; /** *iOS5提供的方...

aibian19971110的博客 314

耶鲁大学《博弈论》课程——逆向归纳

耶鲁大学《博弈论》课程——逆向归纳

ZYLer_的博客 7873

GPFS扩展技术原理(十一)-FMDN广播与EID加解密

GFPS扩展技术原理(十一)FMDN广播及EID加解密

十多年蓝牙协议软件开发,擅长蓝牙协议分析 935

UIImageview 拉伸

The X and Y values seem to be the positions for the stretch starting point, relative to the entire width and height of the image, i.e. 0.5 would mean a point in the middle of the image. 翻译:X和Y值是拉伸开

u010390232的博客 834

ESP32设备驱动-AS5600磁性旋转位置传感器

AS5600 是一款可编程的 12 位高分辨率非接触式磁性旋转位置传感器。 AS5600可以作为磁性电位器或磁性编码器使用,具有出色的可靠性和耐用性。 与传统电位器/编码器相比,AS5600具有显着优势:高精度、非接触式、旋转角度无限制。 所有这些优点使其适用于非接触式角度测量应用,例如机器人手臂、云台、电机闭环控制、机床轴定位。

视觉与物联智能 2552

IOS-UIButton和UIImageView中Image拉伸效果的实现

UIImageView中Image拉伸效果的实现:     UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];     [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)

baojie1022的专栏 809

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

UIButton和UIImageView的区别一

UIImageView中Image拉伸效果的实现:     UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];     [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)

qq_28884869的博客 419

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UIImageView xib里面拉伸图片技巧

拉伸图片的时候代码里和xib里面的图片名字去掉@2x,但是原始图片文件得要xxx@2x.png The X and Y values seem to be the positions for the stretch starting point, relative to the entire width and height of the image, i.e. 0.5 would mean

SpeedBoy007的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS中气泡对话框拉伸效果视图的实现

在iOS开发中会遇到使用一个气泡类型的视图来做背景,有时候是UIView和UIImageView,有时候是对话框Button, 如果直接设置气泡图片的话,图片在拉伸过程中会把气泡的小嘴也拉大,而且如果是Button的话,内容也有可能会添加到小嘴的地方, 在iOS6后,使用 resizableImageWithCapInsets 重构图片大小拉伸的设置可以解决这个问题。

COOL_BEAR_XX的专栏 9900

UIButton实现背景拉伸

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34342992的博客 228

iOS UI篇 学习笔记 UIButton,UIImageView

一.UIButton实例化 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; /* 1.UIButtonTypeSystem           2.UIButtonTypeRoundedRect   圆角按钮, iOS7之前有效,iOS7之后无效果 和UIButtonTypeSystem效果一样 3.UIB

Yaphet_ly的博客 415

IOS图像拉伸

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下: 1 ...

chuhuangqiao1461的博客 136

UIButton 的 backgroundImage 和 image 的填充模式

UIButton 的 backgroundImage 和 image 的填充模式在将 UIButton 当做图标按钮使用时,可以有两种方式给它设置一张图片:setBackgroundImage:forState: 和 setImage:forState:。用这两种方式都可以把 UIButton 作为图片按钮使用,这在图片背景的比例和UIButton 的宽高比例相同时是没什么问题的,图片都不会因为被拉

chaoyang805的博客 1万+

iOS UIImage 拉伸问题 (适用于UIButton等需要局部拉伸的情况)

图片 有的切图切很大 还占用ipa大小,有时候 切图 只需要 局部或者说 一个压缩的图片的抽象状态 直接上代码 CGFloat top = 10; // 顶端盖高度 CGFloat bottom = 10 ; // 底端盖高度 CGFloat left = 10; // 左端盖宽度 CGFloat right = 10; // 右端盖宽度 UIEdgeInsets ins...

weixin_33705053的博客 1052

IOS开发之——彩票-按钮拉伸(4)

一 概述 UIImageView背景图片拉伸设置 UIButton背景图片拉伸设置 二 拉伸Strecthing属性说明 2.1 拉伸属性 2.2 说明 x:左边多少不被拉伸(如:左边一半不被拉伸0.5) y:顶部多少不被拉伸(如:顶部一半不被拉伸0.5) Width:宽度拉伸多少像素(比如:拉伸一个像素0.0001,通常写为0) Height:高度拉伸多少像素(比如:拉伸一个像素0.0001,通常写为0) 三 UIImageView背景图片拉伸设置 3.1 给UIImageView设置图片拉伸

我的博客 467

ios 按钮图片拉伸_iOS应用开发中图片的拉伸问题解决方案

纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能、极强的用户体验、华丽简洁的外观。华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设计好的图片,将会糟蹋了这些设计,功亏一篑。比如下面张图片,本来是设计来做按钮背景的:button.png,尺寸为:24x60现在我们把它用作为按钮背景,按钮尺寸是150x50:复制代码 代码如下://...

weixin_39840111的博客 499

IOS图像拉伸解决方案

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:flo

LIN1986LIN的专栏 2299
上一篇: iOS_开发经验总结:键盘遮挡输入框时的解决方法
下一篇: UIIamgeView拉伸续
yangxt
博客等级 码龄20年 172粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值