文档章节

iOS学习10:UIButton的简单使用

芳仔小脚丫
 芳仔小脚丫
发布于 2013/09/12 11:35
字数 576
阅读 9460
收藏 3

Button(按钮)是使用最频繁的控件之一,UIButton的使用并不难,但是有一点必须要注意

  • UIButton默认Type是Rounded Rect button,这个形态是不被App Store所接受的,即便是你给这个button添加了背景图片,不再是Rounded Rect 的外观,还是会被App Store所拒,总之Button的类型不能是Rounded Rect。

一、UIButton的外观

 1.1 UIButton有6种类型, 如下图所示

UIButtonTypeCustom          
    UIButtonTypeRoundedRect         
    UIButtonTypeDetailDisclosure
    UIButtonTypeInfoLight
    UIButtonTypeInfoDark
    UIButtonTypeContactAdd

1.2 设置buttonType

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 100, 44)];

[UIButton buttonWithType:UIButtonTypeCustom];

二、设置背景图片

2.1可以设置正常状态,不可点击状态,选中状态等各种形态下的背景图片

// 正常状态下的图片
    [button setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];

    // 点击后的图片
    [button setBackgroundImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected];
2.2 可延伸的图片,有一张26*46的图片,但是按钮是100*46,这时将图片延伸一下效果就会很好,这样的话可以使得项目中的图片文件比较小,为项目瘦身,QQ的会话气泡也是利用此种方法达到延伸的效果,先上对比图

UIImage *buttonNormal = [UIImage imageNamed:@"button-white-part"];

// 进行宽度上的延伸,如果要进行高度上的延伸,改变第一个和第三个参数的值,此方法是保证图片边缘的框架的前提下对图片中间进行高度或者宽度的延伸   
UIImage *stretchNormal = [buttonNormal resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 30)];

[button setBackgroundImage:stretchNormal forState:UIControlStateNormal];

三、按钮事件

按钮事件还有好多种,可以自行查看文档

[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];

// 点击事件
- (IBAction)buttonPress:(id)sender {
   NSLog("@"button pressed!");
}
以上是代码添加。

四、xib添加

4.1 在View中拖动一个Button放入画布

4.2 设置button属性

4.3 创建映射,以及按钮事件

选中xib,点击xcode右上方的Editor,让一个界面为xib,另一个界面为其对应的.h文件。

选中button 右键拖拽出一条线到.h文件@interface与@end之间的位置,如果要创建映射则选择IBOutlet,创建按钮事件则选择Action,填写完成后点击connet即可

在.m文件中会出现所创建的点击事件,在方法里完成对应的操作即可。

© 著作权归作者所有

芳仔小脚丫
粉丝 931
博文 83
码字总数 76301
作品 0
闵行
程序员
私信 提问
加载中

评论(2)

最初九月雪
最初九月雪
很想知道那个buttonType是怎么设置的 我这边设置好像没什么用
Youtubeornotobe
Youtubeornotobe
不错,不错。。。
[iOS Animation]-CALayer 专用图层 富文本

富文本 iOS 6中,Apple给UILabel和其他UIKit文本视图添加了直接的属性化字符串的支持,应该说这是一个很方便的特性。不过事实上从iOS3.2开始CATextLayer就已经支持属性化字符串了。这样的话,...

浩浩老师
2015/09/23
0
0
实现 iOS 上的井字游戏

下载 demo - 70.1 KB 简介 本文介绍如何用 MVC 模式在 iOS 上实现双人对战的井字游戏. 读者最好有一些 iOS 编程基础, 以便更好的理解本文的代码. 希望这篇文章对提高读者的 iOS 和 MVC 编程水...

oschina
2014/11/09
2.5K
4
IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton、UISlider、UISwitch、UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到更多的东西。 上图中包涵提...

长平狐
2012/10/25
606
0
ios开发日志-button+UIAlertView

去年学习过一段时间的ios开发 后来不知道为什么就没学了 最近准备重新开始学习ios开发 准备每天发一篇日志记录学习过程,也锻炼下自己的语言组织能力,代码写久了话不会说了 CGRect frame =...

平凡简单
2013/05/31
0
0
用视图上移解决UITextField/UITextView被键盘遮盖问题

先看看UILabel/UITextField/UITextView的区别: UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行; UITextField 可编辑本文,但是无法换行,只能在一行显示;当点击键盘上的ret...

yoyoso
2015/03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
1
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
2
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
5
0
拉普拉斯算子

拉普拉斯算子是二阶微分算子。 我们知道,一维离散信号一阶微分公式如下: 相应的,一维离散信号二阶微分公式如下: 由于图像有x和y两个方向,因此图像信号属于二维离散信号。其在x,y两个...

yepanl
昨天
3
0
记录"正则表达式"

详细请查看我的博客:https://blog.enjoytoshare.club/article/RegularExpression.html 1 写在前面 正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替...

wugenqiang
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部