**
     设置内容距btn边框距离
     **/
    btn.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
    
    /** 将label和imageView看成一个整体
     比如将imageview放到label后面 则需要计算 imageview与label相对的位置 和距离另外一个边的距离
     通俗的说 默认情况下的 imageview在左 titlelabel在右
     imageEdgeInsets left对比位置未 按钮左边框  right 对比与他相邻的label
     titlelabelEdgeInsets 与 image相同
     下面代码为  左右交换image与label
    **/
    
    [btn setImageEdgeInsets:UIEdgeInsetsMake(0,btn.titleLabel.frame.size.width, 0,-btn.titleLabel.frame.size.width-btn.imageView.frame.size.width)];
    
    [btn setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0,CGRectGetWidth(btn.imageView.frame))];

这个方法计算起来比较麻烦  不如直接自定义button 来 重写layoutSubviews方法 直接设置 image lable frame 来达到效果

注:[super layoutSubviews]

/**
     reversesTitleShadowWhenHighlighted 设置标题高亮时 阴影是否突出显示
     adjustsImageWhenHighlighted 默认是肯定的。如果是的话,图像被高亮显示时(按下)
     adjustsImageWhenDisabled 默认是肯定的。如果是,图像被禁用时禁用
     showsTouchWhenHighlighted 默认情况下是没有。如果是,显示一个简单的反馈(目前为辉光),而高亮显示
     **/
    
        btn.reversesTitleShadowWhenHighlighted = NO;
        btn.showsTouchWhenHighlighted = YES;

//设置阴影颜色
    [btn setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn setTitleShadowColor:[UIColor greenColor] forState:UIControlStateHighlighted];

//attributedString标题设置
    NSMutableDictionary * dic = [[NSMutableDictionary alloc]init];
    [dic setObject:[UIColor redColor] forKey:NSBackgroundColorAttributeName];
    NSAttributedString * aStr = [[NSAttributedString alloc]initWithString:@"33333" attributes:dic];
    [btn setAttributedTitle:aStr forState:UIControlStateNormal];

/**
     获取相应状态的属性值
     - (nullable UIColor *)titleColorForState:(UIControlState)state
     - (nullable UIColor *)titleShadowColorForState:(UIControlState)state
     - (nullable UIImage *)imageForState:(UIControlState)state
     - (nullable UIImage *)backgroundImageForState:(UIControlState)state
     - (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state
     **/
    
/*
 在子类化的时候你可以重载下面这些方法,这些方法返回CGRect结构,指明了按钮每一组成部分的边界。
 
 注意:不要直接调用这些方法, 这些方法是你写给系统调用的。
 - (CGRect)backgroundRectForBounds:(CGRect)bounds  制定背景边框
 - (CGRect)contentRectForBounds:(CGRect)bounds 制定内容边界
 - (CGRect)titleRectForContentRect:(CGRect)contentRect  文字标题边界
 - (CGRect)imageRectForContentRect:(CGRect)contentRect 按钮图像边界
 */

UIButton 内部介绍的更多相关文章

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

    本节知识点: 什么是UIButton UIButton的状态 UIButton的属性设置 UIButton基本使用步骤 UIButton的代码创建与常用属性设置 重写按钮的某个状态属性的 setter ...

  2. UIButton内部子控件自定义布局-“UIEdgeInsets”

    UIButton UIButton做frame动画时,不响应点击 在一个View内部加入几个按钮,然后改变这个view的frame来做动画,但是按钮不响应点击事件. 问题代码 __block CGRe ...

  3. java虚拟机内部介绍

    一.介绍 java 的内存管理和垃圾回收在某种程度是同一个问题来着.对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不在需要为每一个new操作去写配对的delete/free代码,不容易出现 ...

  4. iOS UIButton详细介绍

    昨天,做了项目中的一点,觉得细节还是很重要的.像一个普通的UIButton,给它调试字体格式,大小什么的,确实是蛮耗时间的. 今天打算详细的归纳归纳.. typedef NS_ENUM(NSInteg ...

  5. LoadRunner内部介绍以及常见问题

    Tools Recording Options 接下来我们挨个看一下里面的东东以及区别 General(通常的) Script,不用修改,是脚本的语言,我们一般都是基于 C 语言的 Protocols ...

  6. ios自定义UIButton内部空间Rect

  7. UIButton的文本与图片的布局

    UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...

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

    UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...

  9. iOS阶段学习第27天笔记(UIButton-UIImageView的介绍)

    iOS学习(UI)知识点整理 一.关于UIButton的介绍 1)概念:UIButton 是一种常用的控件,通过点击触发相应的功能 2)UIButton 的几种常用的状态        1.UICon ...

随机推荐

  1. 如何在java中使用sikuli进行自动化测试

    很早之前写过一篇介绍sikuli的文章.本文简单介绍如何在java中使用sikuli进自动化测试. 图形脚本语言sikuli sikuli IDE可以完成常见的单击.右击.移动到.拖动等鼠标操作,ja ...

  2. Hadoop下面WordCount运行详解

    单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/ ...

  3. Java集合框架源码剖析:LinkedHashSet 和 LinkedHashMap

    Java LinkedHashMap和HashMap有什么区别和联系?为什么LinkedHashMap会有着更快的迭代速度?LinkedHashSet跟LinkedHashMap有着怎样的内在联系?本 ...

  4. 【Win10】让 AppBarButton 支持更复杂的 Icon 内容

    最近有一个需求,需要制作这么一个 AppBarButton: 这个 AppBarButton 的 Icon 是一个评论框图标里面再显示评论数(大于 99 条则显示 99+).其中评论数是通过数据绑定得 ...

  5. 在GridView列表中使用图片显示记录是否包含附件

    在我的前面很多文章中,都介绍过通用附件模块的管理,本篇随笔主要介绍在一些应用模块中的列表展示中,包含附件的记录,在GridView列表界面中使用图标来快速显示是否有附件的情况. 1.通用附件模块的应用 ...

  6. 响应式布局(Responsive layout,RL)的简单Demo

          ★背景:       响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决 ...

  7. 个人信息管理PIM——密码管理工具软件

    密码管理工具 以KeePass为主,结合LastPass在线浏览器网页密码.有钱银可以考虑1Password. KeePass LastPass 1Password 价格费用 免费开源 普通版:免费 ...

  8. sql server2008中左连接,右连接,等值连接的区别

    数据库中的连接我了解到有left join,right join,inner join这些,以下是它们的区别: 1)左连接(left join):先取出a表的所有数据,再取出a.b表相匹配的数据 2) ...

  9. fibonacci封闭公式

    Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f ...

  10. 部署时,出现用户代码未处理 System.Security.Cryptography.CryptographicException 错误解决方法

    转载:http://www.cnblogs.com/jys509/p/4499978.html 在调用RSA加密的.pfx密钥时,在本地调试没有问题,可以布署到服务器,就会报以下的错误: 用户代码未处 ...