uibttton 的setImageEdgeInsets setTitleLabelEdgeInsets 的使用_baixiuyan0001的博客-程序员宅基地

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改变对齐方式。

    4. 想两改变两个子控件的显示位置,可以分别通过setTitleEdgeInsets和setImageEdgeInsets来实现

需要注意的是,对 titleLabel和imageView设置偏移,是针对它当前的位置起作用的,并不是针对它距离button边框的距离的。测试下来,当 button的contentHorizontalAlignment为居中时,偏移的距离和实际传的值有些偏差,没有发现规律,看不到源码也没在研究,但把button的contentHorizontalAlignment设为居左时,contentVerticalAlignment设为居上时,可以很方便的通过EdgeInsets改变两个子控件的位置。居左时,运行结果如图1.
前提:UIButton: width=220, height=100,  image: width=height=36    text width=62
想要让图片和文本上下排列,需要让image向下偏移10(距离上边间隙),然后向右偏移92( button.width - image.width / 2),计算下来为 [btn setImageEdgeInsets:UIEdgeInsetsMake(5, 92, 0, 0)],它的偏移是针对它图1时的位置,如果想向上偏移传的为负值。
下面要计算机文本偏移了,向下偏移46 (36+10 图片的高度+间隙),向右偏移44 ( (button.width - text.width) / 2  -  image.width );因为文本本身起始x方向位置是从image.width开始的,所以算偏移时,要减掉这个宽度。计算结果为[btn setTitleEdgeInsets:UIEdgeInsetsMake(46, 44, 0, 0)];

修改后的位置如下图
            

                   图1                            图2




 

转载于:https://www.cnblogs.com/ZHP-Study-share/p/5436022.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baixiuyan0001/article/details/102114694

智能推荐

在springboot+springcloud项目中mybatis如何在控制台打印sql-程序员宅基地

如果使用的是application.properties文件,加入如下配置:logging.level.com.example.demo.dao=debuglogging.level.com,后面的路径指的是mybatis对应的方法接口所在的包,即dao层所对应的包。并不是mapper.xml所在的包。如果使用的是application.yml文件,加入如下配置:# 打印sql...

python用什么编程语言好_可以用 Python 编程语言做哪些神奇好玩的事情?-程序员宅基地

from __future__ import print_functionfrom keras.preprocessing.image import load_img, img_to_arrayfrom scipy.misc import imsaveimport numpy as npfrom scipy.optimize import fmin_l_bfgs_bimport timeimpor...

Could not find artifact**.jar in sonatype-nexus-releases,idea无法下载jar包解决方案_could not find artifact in nexus-releases-程序员宅基地

错误信息Failed to execute goal on project XXXX: Could not resolve dependencies for project XXXX:war:1.0-SNAPSHOT: Could not find artifact *******:jar in sonatype-nexus-releases (http://oss.sonatype.org/c..._could not find artifact in nexus-releases

[ZT]Windows server 2003 工具资源命令集_win2003资源监视器 命令行-程序员宅基地

accwiz.exe > Accessibility Wizard for walking you through setting up yourmachine for your mobility needs. 辅助工具向导acsetups.exe > ACS setup DCOM server executableactmovie.exe > Direct Show setup tool 直接显_win2003资源监视器 命令行

github上的开发资源大全中文版_github 中文资源-程序员宅基地

awesome list收集各种awesome。awesome的源头在这里:awesome,后来发展了各种各样的avesome项目。不过资源都是英文的,不太方便国内同学查看,我这里整理了一些中文的avesome项目。参与贡献语言Java资源大全中文版Python 资源大全中文版PHP资源大全中文版PHP资源列表C++ 语言资源大全中文版C 语言资源大全中文版..._github 中文资源

Beanutils.copyProperties( )用法及重写提高效率(参数的顺序)_beanutil.copy 和put-程序员宅基地

最重要的是要注意参数的顺序一、简介: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法: 如果你有两个具有很多相同属性的JavaBean,一个很常见的情..._beanutil.copy 和put

随便推点

c++中Socket通信函数之select_c++ select-程序员宅基地

转自:http://www.51laifu.cn/archives/2012/56/article-16672.html select函数决定一个或者多个套接字(socket)的状态,如果需要的话,等待执行异步I/O。int select( __in int nfds, __inout fd_set_c++ select

前端朋友跳槽必读(前端知识大杂烩)-程序员宅基地

1.一些开放性题目1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。2.项目介绍3.如何看待前端开发?4.平时是如何学习前端开发的?5.未来三到五年的规划是怎样的?2.position的值, relative和absolute分别是相对于谁进行定位的?absolute :生成绝对定位的元素, 相对于最近一级的 定_前端朋友

年会抽奖_java年会抽奖实现-程序员宅基地

/** * 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩: * 1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中; * 2. 待所有字条加入完毕,每人从箱中取一个字条; * 3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!” * 现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖? * 输入描述: * 输入包含多组数据,每组数据包含一个正整数n(..._java年会抽奖实现

linux系统调用,内核函数的关系-程序员宅基地

早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么。当时突然想知道,用户的程序可以直接调用内核函数吗?(现在突然发觉这问题有点可笑,若是可以随便调,那系统岂不是乱套了)从网上找到下面这篇文章,讲的还算透彻。现在自己的理解是,用户程序不可用直接调用内核函数,除非通过系统调用接口。如果想调用哪个内核函数(或自己写的内核函数),怎么办?增加一个系统调用就行了。原文如下:

Android之——流量管理程序演示样例-程序员宅基地

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47680811眼下。市面上有非常多管理手机流量的软件,能够让用户实时获取到自己手机中当前消耗了多少流量,手机中每一个应用程序消耗了多少手机流量,那么这些功能Android中是怎样实现的呢,这篇文章就是要向大家介绍一下,Android系统中流量管理的功能。那么。就让我们一...

IDEA创建Maven —— 阿里云镜像、目录结构不完整、Tomcat启动后404_阿里云镜像 404_老板来碗小面加蛋~的博客-程序员宅基地

文章目录一、Maven安装以及配置环境变量二、IDEA创建Maven项目三、配置Tomcat四、创建好Maven项目出现的问题第一次在IDEA使用Maven时花费了大量时间在搞各种配置和环境,特此记录!!完整的目录结构:一、Maven安装以及配置环境变量官方下载链接:https://archive.apache.org/dist/maven/maven-3/1、建议下载不要选最新的,我第一次使用的时候是Maven 3.6.3+IDEA 2020.3,结果死活用不了,一直卡在阿里云镜像那,后面选_阿里云镜像 404