Button的设置及各种属性

(1)UIButton类继承自UIControl,而UIControl继承自UIView,因为UIView就是个矩形区域,所以UIButton实例化的对象其实都是一个矩形,虽然有各种圆角、增加联系人、信息按钮等等,给它们加个背景它们就现形成矩形了,而且它们有个frame属性,这就是设置位置和矩形框的。

(2)UIButton创建一个按钮不用实例化,也就是不用alloc和init,而是直接调用内置的几个工厂方法即可,这一点和UILabel *label1=[[UILabel alloc]init]不同,而且这些类型里面最常用的时Custom类型,因为我们可以自定义图片,以及图片和文字的位置。

(3)按钮有很多状态,正常状态Normal、被点击时状态Highlighted等等,所以可以分别对不同状态设置属性。

(4)其实按钮最重要的不是上面那些设置属性,而是按钮关联的操作是什么?即点击后发生什么,这需要一个addtarget操作函数,如果多个按钮用到同一个函数,则需要tag属性来区别是哪个按钮。

(5)要自定义按钮,一种方式是我们先自定义一个继承UIButton的类,然后对这个类进行重写函数,相当于定制,最后用这个类去创建按钮,这些按钮也就具有自定义的样式(这种方法只针对自定义按钮类型有效)。

 1 - (void)viewDidLoad {
 2   //生成一个btn1对象,不需要alloc和init,而是直接用内置的工厂方法,有很多可CMD+点击查看
 3   UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
 4   //设置位置和宽高
 5   btn1.frame=CGRectMake(30, 30, 300, 30);
 6   //设置按钮的文字,状态有好几种常用的时Normal和Highlighted(点击时状态),可CMD+点击查看
 7   [btn1 setTitle:@"点我啊!" forState:UIControlStateNormal];
 8   //设置点击时的文本
 9   [btn1 setTitle:@"我被点了!" forState:UIControlStateHighlighted];
10   //设置文字颜色
11   [btn1 setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
12   [btn1 setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
13   //设置点击时按钮背景颜色,呃,完全不起作用,即无效果
14   [btn1 setTintColor:[UIColor purpleColor]];
15   //点击时按钮发光,就是在按钮中间发亮光,这个有效果
16   btn1.showsTouchWhenHighlighted=YES;
17   //设置tag标签,唯一标记用,可用于分辨是哪个按钮控件
18   btn1.tag=1;
19   //设置背景颜色
20   btn1.backgroundColor=[UIColor redColor];
21   //现在高版本的iOS里这个方法会让人抓狂,因为我们发现,不设置背景时,圆角按钮没有边框,所以上面设置frame其实意义不大
22   //设置了背景或者图片后,背景是矩形,说好的圆角呢?坑爹呢!
23   //所以现在大多数开发都是用UIButtonTypeCustom,而不是UIButtonTypeRoundedRect
24
25   //最重要的添加触发事件用户交互
26   //self是指调用哪个对象的方法
27   //btnClick:是调用的方法,btnClick和btnClick:不一样,后者表示有参数
28   //UIControlEventTouchUpInside是触发事件,有很多,可以CMD+点击查看
29   //这里三个参数都可以随意更换,比如新建一个类Hi,在类里定义一个方法-(void)report;
30   //然后在此文件引入Hi.h头文件,在这里实例化一个对象hi1,然后就可以用hi1代替self,用report代替btnClick
31   //意思就是点击后调用的是hi1对象里面的report方法
32   [btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
33
34   //再增加一个按钮
35   UIButton *btn2=[UIButton buttonWithType:UIButtonTypeContactAdd];
36   btn2.frame=CGRectMake(30, 80, 300, 30);
37   //这个增加联系人按钮其实也是一个矩形,和上面的一样,都是继承自UIControl,而后者又继承自UIView,所以是矩形
38   //虽然按钮就一点点大,但点击整个矩形区域都是相当于点击按钮
39   btn2.backgroundColor=[UIColor greenColor];
40   //设置标签
41   btn2.tag=2;
42   //增加事件:和btn1调用同一个方法,但问题是我们如果需要区分是哪个按钮的话,就需要用到tag,并且把控件作为参数传递给btnClick
43   [btn2 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
44
45   //再增加一个最常用的Custom按钮,其他按钮自己尝试
46   UIButton *btn3=[UIButton buttonWithType:UIButtonTypeCustom];
47   btn3.frame=CGRectMake(30 , 150 , 300, 90);
48   btn3.backgroundColor=[UIColor redColor];
49   btn3.tag=3;
50   [btn3 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
51   //设置图片背景被点击时变暗(但没有图片背景时则无效果)
52   btn3.adjustsImageWhenHighlighted=YES;
53   //所以,增加图片方式之一是增加背景图片,这个图片如小会被放大充满整个背景
54   [btn3 setBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
55   //还有一种增加图片的方式,是在按钮上面加而不是背景,这种方式不会缩放图片,而且会居中
56   [btn3 setImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
57   //设置按钮文字,增加的文字会和setImage图片一并居中,图片在左边,文字紧随其后
58   [btn3 setTitle:@"自定义按钮" forState:UIControlStateNormal];
59   //如果需要重新排版这个图片和按钮文字的位置,则需要重写UIButton类里面的两个函数,点击UIButton可查看
60   //- (CGRect)titleRectForContentRect:(CGRect)contentRect;文字相对于按钮的位置
61   //- (CGRect)imageRectForContentRect:(CGRect)contentRect;图片相对于按钮的位置
62   //第一步:可以重新定义一个UIButton类叫myButton,在.m里重写如下函数
63   //- (CGRect)titleRectForContentRect:(CGRect)contentRect{
64   //    return CGRectMake(50, 25, 100, 40);
65   //}
66   //- (CGRect)imageRectForContentRect:(CGRect)contentRect{
67   //    return CGRectMake(150, 25, 40, 40);
68   //}
69   //第二步,在这个文件中引入myButton.h头文件,然后实例化btn3的时候,用myButton,而不用原始的UIButton
70   //myButton相当于稍微定制了一下原生的UIButton,所以前者实例出得对象也就具有定制效果
71   //这种方式仅对UIButtonTypeCustom有效,其他无效
72
73   //把三个按钮显示出来
74   [self.view addSubview:btn1];
75   [self.view addSubview:btn2];
76   [self.view addSubview:btn3];
77   [super viewDidLoad];
78   // Do any additional setup after loading the view, typically from a nib.
79 }
80 //增加一个参数,即由原先的-(void)btnClick{}变成如下
81 //因为我们知道这里都是按钮对象,所以可以用(UIButton *)sender,但通常我们用通用指针id
82 -(void)btnClick:(id)sender{
83   //把传递过来的控件参数转化成按钮
84   UIButton *btn=(UIButton *)sender;
85   //把btn.tag转化成整型
86   NSLog(@"OMG,it is %i",(int)btn.tag);
87 }
时间: 2024-11-11 03:58:00

Button的设置及各种属性的相关文章

jQuery 设置内容和属性

设置内容 - text().html() 以及 val() 我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 下面的例子演示如何通过 text().html() 以及 val() 方法来设置内容: 实例 $("#btn1").click(function(){  $("#test1").text("Hel

form中button未设置type值时点击后提交表单

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

jquery操作html元素之(设置内容和属性)

设置内容 - text().html() 以及 val() 我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 下面的例子演示如何通过 text().html() 以及 val() 方法来设置内容: 实例 $("#btn1").click(function(){ $("#test1").text("Hell

JavaScript(19)jQuery HTML 获取和设置内容和属性

jQuery HTML jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力.jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易. 提示:DOM = Document Object Model(文档对象模型) DOM 定义访问 HTML 和 XML 文档的标准:"W3C 文档对象模型独立于平台和语言的界面,允许程序和脚本动态访问和更新文档的内容.结构以及样式."

ios weibo 第二天 设置导航栏属性,添加加号按钮

要点:1.在底部添加加号按钮 2.设置导航栏属性 1.weibo底部的button其中四个按钮是一样的,其中中间的加号需要另外做处理 tablebar是自己定义的 ,代码如下 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 删除系统自动生成的UITabBarButton for (UIView *child in self.tabBar.subviews) { if ([child isKin

jQuery设置内容和属性方

何问起 hovertree.com 设置内容 - text().html() 以及 val()text() - 设置或返回所选元素的文本内容html() - 设置或返回所选元素的内容(包括 HTML 标记)val() - 设置或返回表单字段的值 示例: <!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js"></script> <s

jQuery - 获取/设置内容和属性

获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 下面的例子演示如何通过 jQuery text() 和 html() 方法来获得内容: 实例 $("#btn1").click(function(){ alert("Text: " + $(&qu

jQuery - 设置内容和属性 设置内容 - text()、html() 以及 val() , 设置属性 - attr()

jQuery - 设置内容和属性  设置内容 - text().html() 以及 val() text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 下面的例子演示如何通过 text().html() 以及 val() 方法来设置内容: 实例 $("#btn1").click(function(){ $("#test1").text("Hello worl

设置元素的属性

html: <!DOCTYPE ><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style type="text/css"> * { margin: 20; padding: 0; font-family