UIButton 内部介绍

**
     设置内容距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 按钮图像边界
 */

时间: 2024-10-11 22:20:21

UIButton 内部介绍的相关文章

UIButton详细介绍及注意事项

按钮UIButton是ios开发中最常见的控件之一,下面来介绍UIButton的详细内容,及开发中需要注意的问题. UIButton简介: 使用目标动作设计模式,target-action模式,3种回调的模式之一. 实现原理: 使用下面的方法封装,根据用户的点击移动等动作 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; - (void)touchesMoved:(NSSet *)touches withEvent

UIButton基本介绍

UIButton 就是一个按钮,他继承UIView 那么就来介绍一下 1:初始化给大小:便利构造器: //初始化 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; //设置 Button 的 frame button.frame = CGRectMake(100, 100, 100, 100); //设置背景 button.backgroundColor = [UIColor redColor]; //把他添加到 U

IOS UIButton 常用方法介绍

// 创建按钮 UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 设置按钮标题 [button setTitle:@"触摸我!" forState:UIControlStateNormal]; // 根据标题长度自动决定按钮尺寸 [button sizeToFit]; // 将按钮布置在中心位置 button.center = self.view.center; // 画面变化时按钮位置自动

java虚拟机内部介绍

一.介绍 java 的内存管理和垃圾回收在某种程度是同一个问题来着.对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不在需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄露和内存溢出问题,由虚拟机管理内存这一切看起来变得很美好.不过,也正是因为java程序员将内存控制的权利交给了java虚拟机,一旦出现内存泄露和溢出的问题,如果不了解jvm是如何使用内存的,那么排查错误将成为一项异常艰难的工作. 1.1运行时数据区域 java虚拟机在执行java程序的过程中会

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

UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目前主要用两种方式,一种就是重写按钮,另一种就是通过setTitleEdgeInsets和setImageEdgeInsets方法解决 下图是按钮默认情况下的图文布局 左边文本,右边图片首先介绍重写按钮吧,新建一个按钮继承UIButton, - (void)layoutSubviews {    [s

UIKit框架(18)UIButton和UITextField

UIButton按钮控件和UITextField输入框控件,是UI开发中比较常用的两个控件 和UILabel.UIImageView.UISwitch相比,用法相对比较丰富 UIButton的四个状态 UIButton有四个状态: //正常状态 UIControlStateNormal  //高亮状态:当按钮被按下时的状态 UIControlStateHighlighted  //选中状态:通过UIButton对象的selected属性进行切换 UIControlStateSelected  /

Hive[2] 基础介绍

2.3 Hive 内部介绍: P44 $HIVE_HOME/lib 下的 jar 文件是具体的功能部分:(CLI模块) 其它组件,Thrift 服务,可以远程访问其他进程功能:也有使用 JDBC 和 ODBC 访问 Hive 的功能: 所有Hive 客户端都需要一个 metastoreservice(元数据服务),Hive 用这个服务来存储表模式信息和其他元数据信息:默认会使用内置的 Derby SQL服务器提供有限的单进程的存储服务: HWI Hive 网页界面,提供了远程访问Hive 的服务

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

iOS学习(UI)知识点整理 一.关于UIButton的介绍 1)概念:UIButton 是一种常用的控件,通过点击触发相应的功能 2)UIButton 的几种常用的状态        1.UIControlStateNormal  正常状态        2.UIControlStateHighlighted 高亮状态        3.UIControlStateSelected 选中状态  -> 当button的selected设置成yes之后才能触发 3)UIButton常用的几种事件 

UIButton关于setFont方法过时的解决方法

环境:xcode7 语言:Object-c 解决方法:更改UIButton的titleLabel属性的font值 一.新建一个Single View Application项目 二.创建一个UIButton 模拟器效果: 三.更改按钮字体大小 四.实质 我们在debug area中点击debug view Hierarchy图标 debug view Hierarchy将会显示工程UI的结构: 至此我们发现UIButton内部有个UIButtonLabel的子视图,修改按钮的字体大小时,我们只需