原生UIButton的文本与图片的布局

iOS UIButton自定义布局:图片左置文字右置的实现与原理 是UIButton的一个重要属性,它允许开发者通过指定的边缘内边距值来调整按钮内文字的位置。这个属性为UI布局提供了更多的灵活性,使得开发者可以根据不同的设计需求将按钮上的文字放置在更合适的位置。接受一个结构体,该结构体包含了四个方向的边距值:top、left、bottom、right,这些值可以是负数,从而允许文字的位置超出按钮视图的边界。与类似,属性也用于调整UIButton内部图像的位置。 阅读详情

通过setTitleEdgeInsets和setImageEdgeInsets方法解决

这种方法的最大好处,就是不要在重写UIButton,直接在新建的UIButton中改变上面两个属性的值就可以达到我们想要的结果
左边文本右边图片


代码如下:

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn1.frame = CGRectMake(50, 100, 80, 40);
    [btn1 setImage:[UIImage imageNamed:@"icon_shouye"] forState:UIControlStateNormal];
    [btn1 setTitle:@"首页" forState:UIControlStateNormal];
    [btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btn1.backgroundColor = [UIColor redColor];    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(50, 50, 80, 40);
    [btn setImage:[UIImage imageNamed:@"icon_shouye"] forState:UIControlStateNormal];
    [btn setTitle:@"首页" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btn.backgroundColor = [UIColor redColor];    //上左下右
 
    btn.imageEdgeInsets = UIEdgeInsetsMake(0, btn.frame.size.width - btn.imageView.frame.origin.x - btn.imageView.frame.size.width, 0, 0);
    btn.titleEdgeInsets = UIEdgeInsetsMake(0, -(btn.frame.size.width - btn.imageView.frame.size.width ), 0, 0);
    [self.view addSubview:btn1];
    [self.view addSubview:btn];

上面图片下面文本


代码如下:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(50, 50, 80, 60);
    [btn setImage:[UIImage imageNamed:@"icon_shouye"] forState:UIControlStateNormal];
    [btn setTitle:@"首页的事" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btn.backgroundColor = [UIColor redColor];
 
    btn.imageEdgeInsets = UIEdgeInsetsMake(- (btn.frame.size.height - btn.titleLabel.frame.size.height- btn.titleLabel.frame.origin.y),(btn.frame.size.width -btn.titleLabel.frame.size.width)/2.0f -btn.imageView.frame.size.width, 0, 0);
    btn.titleEdgeInsets = UIEdgeInsetsMake(btn.frame.size.height-btn.imageView.frame.size.height-btn.imageView.frame.origin.y, -btn.imageView.frame.size.width, 0, 0);
    [self.view addSubview:btn];

关于setTitleEdgeInsets和setImageEdgeInsets下面进行一些解释:
UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片。给UIButton设置了title和image后,它们会图片在左边,文本在图片右边显示。它们两个做为一个整体依赖于button的contentHorizontalAlignment居左居右或居中显示。

显示格式区分:
1.当button.width < image.width时,只显示被压缩后的图片,图片是按照fillXY的方式压缩。
2.当button.width > image.width,且button.width < (image.width+text.width)时,图片正常显示,文本被压缩。
3.当button.width > (image.width+text.width)时,两者并列默认居中显示,可通过button的属性contentHorizontalAlignment改变对齐方式。

想改变两个子控件的显示位置,可以分别通过setTitleEdgeInsets和setImageEdgeInsets来实现。对titleLabel和imageView设置偏移是针对他当前的位置起作用的,并不是针对距离button边框的距离的。

typedefNS_ENUM(NSInteger, UIControlContentHorizontalAlignment) {
   UIControlContentHorizontalAlignmentCenter =0,//居中
   UIControlContentHorizontalAlignmentLeft   =1,//居左
   UIControlContentHorizontalAlignmentRight  =2,//居右
   UIControlContentHorizontalAlignmentFill   =3,//

想两改变两个子控件的显示位置,可以分别通过setTitleEdgeInsets和setImageEdgeInsets来实现。需要注意的是,对titleLabel和imageView设置偏移,是针对它当前的位置起作用的,并不是针对它距离button边框的距离的。感觉设置不设置UIControlContentHorizontalAlignmentCenter居中都没有影响,这个网上也找了些相关的信息,感觉都没有说到重点,我这里也没有完全理解透彻,之前都是在设置setTitleEdgeInsets和setImageEdgeInsets这些参数时都是不停的尝试得到的结果。目前这是我理解后,代码实现最后的答案,希望可以帮到大家。

原文 http://www.cnblogs.com/oc-bowen/p/5851849.html ,本文只转载了其中原生UIButton图文布局部分


二叉树的操作之统计二叉树中节点的个数 一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结... 阅读详情

相关推荐

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5939

原生按钮实现加图标效果

html:

Amy's Home 1214

硬件工程师入门进阶,一文搞懂,看这篇就对了

每家公司的datasheet都有严格的规范,及独特的风格,有时候还会穿插一些原理性的介绍,比如ADI公司的一些ADC/DAC器件资料里面,还会包含AD/DA转换的原理性讲解内容,Datasheet既可以是我们设计上的好帮手,也是学习的好资料。在出货量大的产品中,尽量减少物料种类,比如开头说的,1%的电阻不得不用,那么5%的替换成1%的,物料种类就减少一种,量就大了,能不能争取更优的价格呢?如果说前面学的是内功,那这一关,是招式、是工具的使用,原理图和PCB设计都有对应的工具,教程也很多,且比较容易上手。

一路带飞的博客 5万+

5分钟 搞定UIButton的文本与图片的布局

UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过setTitleEdgeInsets和setImageEdgeInsets方法解决 下图是按钮默认情况下的图文布局 左边文本,右边图...

weixin_34128839的博客 332

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

Class AB OPA STB仿真相位异常:从corner case到碰撞电离的排查与规避

本文深入分析了Class AB运算放大器(OPA)在STB稳定性仿真中,特定工艺角(corner case)下出现相位从0°开始的异常现象。排查发现,其根本原因在于高Vds引发的碰撞电离效应,通过衬底和电源网络引入了隐藏的正反馈通路。文章对比了修改衬底连接与优化电路降低Vds两种解决方案,并基于工程实践推荐了代价更小、兼容性更好的电路优化方案,成功规避了问题并完成流片验证。

grape的博客 636

html5 文字图片布局,5分钟 搞定UIButton的文本与图片的布局(自定义按钮)

UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过setTitleEdgeInsets和setImageEdgeInsets方法解决下图是按钮默认情况下的图文布局屏幕快照 2016-05-30 10.1...

weixin_39963096的博客 740

实干派!网易易盾增强版滑块验证码,全方位讲解识别思路(含源码)

该验证码是异形滑块验证码中的一种,缺口旋转+偏移的处理需要你有很好的图像处理知识,能很好的处理透明通道,同时,该验证码需要你能很好的处理缺口和背景之间匹配的关系,该验证码的处理难点就是两个缺口之间如何找到正确的,两个检测框都有很强的相似度,且加上背景图的干扰,在图像处理和有优化上难度大大增加。

码王吴彦祖的博客 2015

iOS UIButton图片与文字位置

iOS中UIButton可设置图片和文字,当两者同时存在时,默认为图片在左,文字在右.有时候,我们需要改变两者之间的位置,因为需求虐我千百遍嘛! 话不多说,直接上代码,我们新建一个UIButton的一个分类,设置titleEdgeInsets与imageEdgeInsets的值接口满足需求. UIButton+ImageAlignmentStyle.h 文件 // 定义一个枚举(包含了...

smile_sunshine 1637

汇川H5U模拟量输出模拟量转换FC: S_RTI

汇川H5U模拟量输入模拟量转换 FC S_ITR_RXXW_Dor的博客-优快云博客接口中的临时变量,如果优化的可以省去一些,感兴趣的可以自行编写修改下,这里不在举例。至此模拟量输入转换FC编写完成。

RXXW_Dor的博客 6678

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

AI人人懂 3822

iOS 搞定UIButton的文本与图片的布局

UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过setTitleEdgeInsets和setImageEdgeInsets方法解决 下图是按钮默认情况下的图文布局  左边文本,右边图片 ...

allanGold 1181

回归预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

回归预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2490

UIButton的文本与图片的布局

文章转自 Migi000的简书 http://www.cocoachina.com/ios/20160907/17499.html UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过

东甲西乙南丙北丁君 499

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

UIButton 获取网络图片的排版技巧

最近在做 UI 的时候,遇到一排 button 需要通过后端来控制它的 image 和 title。但由于 Android 和 iOS 对图片要求的尺寸有差异,因此通过后端开控制图片大小比较麻烦。

Anybody capable of love is capable of being saved. 3629

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IOS-UIButton的文本与图片的布局

IOS-UIButton的文本与图片的布局 UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过setTitleEdgeInsets和setImageEdgeInsets方法解决 下图是按钮默

qq_25728987的博客 537

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IOS 利用 runtime 实现UIButton图片在上和文字在下

在IOS开发的过程中经常会遇到需要在button中既放置图片和文字,系统默认会将图片居左,文字居右; 但我们也常常会遇到 图片居上文字居下 或者图片居右文字居左的需求;网上也有很多方法来实现这样的需求, 但我在使用的过程中,也还是会有各种各样的问题,所以我也尝试着用一种方式来避免我所遇到的各种各样的问题!

zxw_xzr的博客 1576

通过setTitleEdgeInsets和setImageEdgeInsets改变UIBtton文本图片位置

UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本右边图片,上面图片下面文本和上面文本下面图片该怎么办呢? setTitleEdgeInsets和setImageEdgeInsets方法的好处就是不要在重写UIButton,直接在新建的UIButton中改变上面两个属性的值就可以达到我们想要的结果 左边文本右边图片 -(UIBut

yangliu16的博客 3438

UIButton的图片和文字

项目中常遇见图片和文字都有的格式,这里可以创建一个UIButton的类别, #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, ZJButtonImageStyle){ ZJButtonImageStyleTop = 0, //图片在上,文字在下 ZJButtonImageStyleLeft, //图片在左,文字在右 ZJButtonImageStyleBottom, //图片在下,文字在上 ...

u013712343的博客 508

你真的会用UIButton吗? UIButton详细介绍

本节知识点: 什么是UIButton UIButton的状态 UIButton的属性设置 UIButton基本使用步骤 UIButton的代码创建与常用属性设置 重写按钮的某个状态属性的 setter 或 getter 方法设置按钮的状态 调整UIButton内部布局 1. 什么是UIButton 还有一个非常重要的UI控件—UIButton,俗称“按钮” 一般情况下,点击某个控件后,会做出相

CD豪 1万+

iOS -- UIButton上的文字、图片位置的调整

我们都知道UIButton上有titleLable和imageView,但是有时候我们不想用它默认的位置的,想要改变他的文字和图片的位置,那么如何来达到效果呢? 简单思路就是:新建一个类继承于UIButton,重写两个函数,        -(CGRect) imageRectForContentRect:(CGRect)contentRect ; 设置图片的位置        -(CGRe

shuai_summer的博客 1840

UIButton 设置 image 和 title 的布局问题

系统自带的 UIButton 是可以添加一个图片和一个标题的,并且位置是可以随意设置的。 主要用到两个属性 imageEdgeInsets titleEdgeInsets 1.如果图片的宽/高(@2x@3x做相应的处理)大于等于 button 的大小, imageView 的 frame 的 x/y 为0,width/height 为 button 的 width/heigh

xi_ui的博客 1955

UIButton图片在左,文字在又,设置图文间距

UIButton默认image在左,title在又,如果需要设置图片文字之间的距离,需要设置edgeInsets,例如: - (UIButton *)moreMsgButton { if (!_moreMsgButton) { _moreMsgButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_m...

竹毛言己 2971
上一篇: 按位与、或、异或等运算方法
下一篇: 横向排列views,自动换行
csdndimo
博客等级 码龄13年 0粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值