UIButton的探秘
sizeToFit()和sizeThatFits(_:)
sizeToFit()会调用sizeThatFits(_:)方法,将现在的frame作为参数。然后根据函数返回的结果更新view。
sizeToFit will simply call through to sizeThatFits: passing the view's current size as the argument. It will then update the view's frame based on the value it gets back. So all the important logic goes in sizeThatFits:, and this is the method you should override for your own custom controls.
UIButton标题的shadow效果与反转
myButton?.titleLabel?.shadowOffset = CGSizeMake(2.0, 2.0)
myButton?.setTitleShadowColor(UIColor.redColor(), forState: .Normal)
// myButton?.showsTouchWhenHighlighted = true
myButton?.reversesTitleShadowWhenHighlighted = true
加上选中态亮瞎眼的效果
myButton?.showsTouchWhenHighlighted = true
UIButton的布局与UIEdgeInsets
有三个UIEdgeInsets
- contentEdgeInsets
使用sizeThatFits(_:)计算时用到。 - titleEdgeInsets
使用sizeThatFits(_:)计算时不会用到。 - imageEdgeInsets
使用sizeThatFits(_:)计算时不会用到。
You can specify a different value for each of the four insets (top, left, bottom, right). A positive value shrinks, or insets, that edge—moving it closer to the center of the button. A negative value expands, or outsets, that edge.
举例说明
- contentEdgeInsets

left和right都是30,会使左边向中间移动30pt,右边向中间移动30pt。也就是左间距和右间距都是30pt。由于contentEdgeInsets参与sizeThatFits(_:)的计算,所以最终表现为整个button被拉宽。 - titleEdgeInsets

保持contentEdgeInsets不变,设置titleEdgeInsets的left为15。由于titleEdgeInsets在sizeThatFits(_:)中不参与,因此button没有被拉宽,只是titleLabel的左边向右(中心)移动了15pt,右边保持不变。导致字符串没有被显示全。

设置titleEdgeInsets的right为-15,结果是titleLabel的右边向右移动了15pt,从而整体的显示范围不变。 - imageEdgeInsets
图像在右,标题在左
button.transform = CGAffineTransformMakeScale(-1.0, 1.0);
button.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0);
button.imageView.transform = CGAffineTransformMakeScale(-1.0, 1.0);
posted on AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ... 背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ... composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ... UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ... 基于AngularJS的个推前端云组件探秘 AngularJS是google设计和开发的一套前端开发框架,帮助开发人员简化前端开发的负担.AngularJS将帮助标准化的开发web应用结构并且提供了针 ... 自从用 dotnet run 成功运行第一个 "Hello world" .NET Core 应用程序后,一直有个好奇心:dotnet run 究竟是如何运行一个 .NET Cor ... UIButton的imageView和titleLabel的位置设置通过setImageEdgeInsets和setTitleEdgeInsets来设置 参考:http://blog.csdn.net ... UIButton setImage 和 setTitle之后,默认的 image和title 对齐方式是居中, 由于 title 长度不固定,所以如果要几个这样有image有title的按钮纵向排列对 ... 一.问题描述 因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动.所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即 ... 解题关键:kdtree模板题,距离某点最近的m个点. #include<cstdio> #include<cstring> #include<algorithm> ... jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用 网上下载安装LOMBOK失败,直接下载插件安装: 在离线安装IDEA插件的时候,可能会出现该问题.引起的原因主要就是版本号不一致. 下面介绍下离线安装找到合适的版本号. 1.在IDEA的help-&g ... 参考: Comparison method violates its general contract Comparison method violates its general contract! ... http://acm.hdu.edu.cn/showproblem.php?pid=1754 相似例题: 敌兵布阵 http://www.cnblogs.com/zhumengdexiao ... Python Windows 下打包成exe文件,使用PyInstaller 软件环境: 1.OS:Win10 64 位 2.Python 3.7 3.安装PyInstaller 先检查是否已安装Py ... 在网站开发中难免要调试页面,而使用django开发站点时,可以使用django-debug-toolbar来进行调试,安装这个插件很有用,我一开始是为了查看某个页面中所有的context变量值,当然你 ... 1.使用ProgressMessageHandler 获取进度 using namespace System.Net.Http; HttpClientHandler hand = new HttpCl ... GO的可见性:如果想使用别的包的函数.结构体类型.结构体成员 函数名.结构体类型.结构体成员变量名的首字母必须是大写,则为可见,反之,则只能在一个包里使用 比如本来就有一个项目叫awesomeproj ... Java语言的特点 有很多小特点,重点有两个开源,跨平台 Java语言是跨平台的 Java语言的平台 JavaSE JavaME--Android ...
2017-01-14 08:35
花老
UIButton的探秘的更多相关文章
随机推荐


