回归自然,UIButton是我们使用最频烦的一个控件。下面,对该控件的一些常用方法进行一些总结.

    UIButton *payStateBtn = [UIButton buttonWithType:UIButtonTypeCustom];
payStateBtn.frame = CGRectMake(, , ScreenWidth - , ); // 设置字体向左对齐
payStateBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
// 设置字体
payStateBtn.titleLabel.font = [UIFont systemFontOfSize:];
[payStateBtn setTitle:@"支付失败" forState:UIControlStateNormal];
[payStateBtn setTitle:@"支付成功" forState:UIControlStateSelected];
[payStateBtn setTitleEdgeInsets:UIEdgeInsetsMake(, , , )];
[payStateBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[payStateBtn setTitleColor:[UIColor colorWithHexString:Color_Red] forState:UIControlStateSelected];
[payStateBtn setImage:[UIImage imageNamed:@"failure"] forState:UIControlStateNormal];
[payStateBtn setImage:[UIImage imageNamed:@"success"] forState:UIControlStateSelected];
[self.View addSubview:payStateBtn];

上面的代码,很常用,我们在看代码,已经大概知道其中意思。

要显示选中时的样子,只需要设置:payStateBtn.Selected = Yes;

另外一些常用的属性

设置不可点击

[Button setUserInteractionEnabled:NO];
// 或者

 button.userInteractionEnabled = NO;

设置中心位置点

btn1.center = CGPointMake(, );

设置按钮样式

//    能够定义的button类型有以下6种,
// typedef enum {
// UIButtonTypeCustom = 0, 自定义风格
// UIButtonTypeRoundedRect, 圆角矩形
// UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用
// UIButtonTypeInfoLight, 亮色感叹号
// UIButtonTypeInfoDark, 暗色感叹号
// UIButtonTypeContactAdd, 十字加号按钮
// } UIButtonTyp

其它

   /* forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现*/
//以下是几种状态
// enum {
// UIControlStateNormal = 0, 常规状态显现
// UIControlStateHighlighted = 1 << 0, 高亮状态显现
// UIControlStateDisabled = 1 << 1, 禁用的状态才会显现
// UIControlStateSelected = 1 << 2, 选中状态
// UIControlStateApplication = 0x00FF0000, 当应用程序标志时
// UIControlStateReserved = 0xFF000000 为内部框架预留,可以不管他
// };
/*
* 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no,
* 那么可以去掉这个功能
*/
button1.adjustsImageWhenHighlighted = NO;
/*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/
button1.adjustsImageWhenDisabled = NO;
/* 下面的这个属性设置为yes的状态下,按钮按下会发光*/
button1.showsTouchWhenHighlighted = YES; /* 给button添加事件,事件有很多种,我会单独开一篇博文介绍它们,下面这个时间的意思是
按下按钮,并且手指离开屏幕的时候触发这个事件,跟web中的click事件一样。
触发了这个事件以后,执行butClick:这个方法,addTarget:self 的意思是说,这个方法在本类中
也可以传入其他类的指针*/
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];

设置圆角和边框及边框颜色

[box.actionButton.layer setMasksToBounds:YES];
[box.actionButton.layer setCornerRadius:10.0]; //设置矩形四个圆角半径
//边框宽度
[box.actionButton.layer setBorderWidth:1.0];
//设置边框颜色有两种方法:第一种如下:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef colorref = CGColorCreate(colorSpace,(CGFloat[]){ , , , });
[box.actionButton.layer setBorderColor:colorref];//边框颜色
//第二种方法如下:
//_testButton.layer.borderColor=[UIColor grayColor].CGColor;

设置按钮图片在上面,文字在下面

重写UIButton

@implementation XMGVerticalButton

- (void)setup
{
self.titleLabel.textAlignment = NSTextAlignmentCenter;
} - (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self setup];
}
return self;
} - (void)awakeFromNib
{
[self setup];
} - (void)layoutSubviews
{
[super layoutSubviews]; // 调整图片
self.imageView.x = ;
self.imageView.y = ;
self.imageView.width = self.width;
self.imageView.height = self.imageView.width; // 调整文字
self.titleLabel.x = ;
self.titleLabel.y = self.imageView.height;
self.titleLabel.width = self.width;
self.titleLabel.height = self.height - self.titleLabel.y;
} @end

如果想让按钮点击后,立即就显示,不需要过度效果,需要重写UIButton

#import "HWEmotionTabBarButton.h"

@implementation HWEmotionTabBarButton

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// 设置文字颜色
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self setTitleColor:[UIColor darkGrayColor] forState:UIControlStateDisabled];
// 设置字体
self.titleLabel.font = [UIFont systemFontOfSize:];
}
return self;
} - (void)setHighlighted:(BOOL)highlighted {
// 按钮高亮所做的一切操作都不在了
}
@end

iOS UI基础-16.0 UIButton的更多相关文章

  1. iOS UI基础-17.0 UILable之NSMutableAttributedString

    在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...

  2. iOS UI基础-9.0 UITableView基础

    在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: ...

  3. iOS UI基础-4.0应用程序管理

    功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...

  4. iOS UI基础-3.0图片浏览器及plist使用

    需求: 1.显示当前图片序号/总图片数 2.显示图片 3.上一张图片.下一张图片转换 4.显示图片描述 下面用代码来实现 // // UYViewController.m // 3.0图片查看器 // ...

  5. iOS UI基础-2.0按钮操作与形变

    按钮状态 1.normal:默认状态 Default 对应的枚举常量:UIControlStateNormal   2.highlighted(高亮状态) 按钮被按下去的时候(未松开) 对应的枚举常量 ...

  6. iOS UI基础-19.0 UICollectionView

    直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...

  7. iOS UI基础-15.0 UIWebView

    WebView介绍 知识点: 代码创建一个UIWebView OC调用html的js js页面调用OC 相关代码实现 代码创建一个UIWebView // 1.webView UIWebView *w ...

  8. iOS UI基础-13.0 数据存储

    应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Lay ...

  9. iOS UI基础-12.0 Storyboard

    storyboard创建控制器 1.先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UIStoryboard stor ...

随机推荐

  1. SQL命令中的case...when...then...else...end条件查询

    select b.XH, b.ZBXH, a.SJKSMC, a.JCRQ, a.JYRQ, a.JCJBMC, a.CYZMC,                               b.CY ...

  2. tensorflow 的tf.split函数的用法

    将张量进行切分 tf.split( value, num_or_size_splits, axis=0, num=None, name='split' ) value: 待切分的张量 num_or_s ...

  3. Exception 04 : java.lang.ClassNotFoundException: Could not load requested class : org.hsqldb.jdbcDriver

    异常详细信息 org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org ...

  4. log4j.properties 日志文件的详细配置说明

    一.在一个web 项目中,使用tomcat 启动通常会在控制台输出出现一个警告信息: 通常为未添加 log4j.properties文件的原因. 二.下面以一个普通的maven项目为例说明一下 1. ...

  5. Spring Boot引起的“堆外内存泄漏”排查及经验总结

    小结: 检索词:C++内存分配器.jvm内存模型.gdb.内存泄露 https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak ...

  6. [skill][funny] 一个很厉害的for循环

    int DSSL_MoveServerToMissingKeyList( DSSL_Env* env, DSSL_ServerInfo* si ) { DSSL_ServerInfo** new_se ...

  7. mysql学习【第2篇】:MySQL数据管理

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第2篇]:MySQL数据管理 外键管理 外键概念 如果公共关键字在一个关系中是主 ...

  8. 最大似然估计(Maximum likelihood estimation)(通过例子理解)

    似然与概率 https://blog.csdn.net/u014182497/article/details/82252456 在统计学中,似然函数(likelihood function,通常简写为 ...

  9. http请求的基本介绍

    响应码 1xx:接收到请求并且继续处理  ,这个是一瞬间的状态,一般不关注 2xx:请求已被接收,理解,处理,表示正确 3xx:请求重定向 4xx:客户请求语法错误或者请求资源不存在,这个是客户端错误 ...

  10. 原声js,取消事件冒泡,点击按钮,显示box,点击屏幕其他地方,box隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...