iOS学习——UI基础UIButton(七)

简介:

前面写了UIWindow、UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件,其他的就是自定义实现了,作者目前是入门状态,只能写写基础控件了。

      iOS中提供了UIButton、UILable、UITextField、UIImageView等基础UI控件,继承于UIView。这里先拿UIButton练练手,为什么拿UIButton呢,因为UIbutton继承自UIControl,UIControl派生自UIView类,每个控件都有很多视图的特性,包括附着于其他视图的能力,所有控件都拥有一套共同的属性和方法,包含显示内容,点击事件等等,UIControl的子类都有事件处理能力。

图、UIControl


UIButton的定义:

     UIButton可使用 initWithFrame、buttonWithType两种方式创建:

1)initWithFrame

  UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(60, 60, 200, 60)];     btn.backgroundColor=[UIColor greenColor];     [btn setTitle:@"btn1" forState:UIControlStateNormal];     [self.view addSubview:btn];

2)buttonWithType

UIButton *btn2=[UIButton buttonWithType:UIButtonTypeRoundedRect];     CGRect rect=CGRectMake(60, 160, 200, 60);     btn2.frame=rect;     btn2.tag=1001;     btn2.backgroundColor=[UIColor colorWithRed:30/255.0 green:200/255.0 blue:125/255.0 alpha:1.0];     [btn2 setTitle:@"btn2" forState:UIControlStateNormal];      [btn2 addTarget:self action:@selector(btn2Pressed) forControlEvents:UIControlEventTouchDown];     [self.view addSubview:btn2]; 
btn2Pressed方法:

-(void)btn2Pressed{      NSLog(@"button pressed"); }

UIButtonType:

typedef enum {     UIButtonTypeCustom = 0,           // no button type   自定义,无风格     UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card 白色圆角矩形,类似偏好设置表格单元或者地址簿卡片     UIButtonTypeDetailDisclosure,//蓝色的披露按钮,可放在任何文字旁     UIButtonTypeInfoLight,//微件(widget)使用的小圆圈信息按钮,可以放在任何文字旁     UIButtonTypeInfoDark,//白色背景下使用的深色圆圈信息按钮     UIButtonTypeContactAdd,//蓝色加号(+)按钮,可以放在任何文字旁 } UIButtonType;

UIButton常用属性:

//设置对应状态的标题内容default is nil. title is assumed to be single line

- (void)setTitle:(NSString *)title forState:(UIControlState)state;  

//设置对应状态的标题颜色           

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;   

//设置对应状态的标题阴影颜色            

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state;          

//设置对应状态的按钮的图片

- (void)setImage:(UIImage *)image forState:(UIControlState)state;        

//设置对应状态的按钮背景图片

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;    


UIButton的UIControlState   :     

typedef NS_OPTIONS(NSUInteger, UIControlState) {     UIControlStateNormal       = 0,     UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set     UIControlStateDisabled     = 1 << 1,     UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)     UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use     UIControlStateReserved     = 0xFF000000               // flags reserved for internal framework use };



更多属性可参考官方文档。

UIButton添加事件:

UIButton使用如下方法添加事件。

[btn addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>]

这些事件都是基于触摸、基于值、基于编辑。可相应如下事件。

typedef NS_OPTIONS(NSUInteger, UIControlEvents) {     UIControlEventTouchDown           = 1 <<  0,      // on all touch downs     UIControlEventTouchDownRepeat     = 1 <<  1,      // on multiple touchdowns (tap count > 1)     UIControlEventTouchDragInside     = 1 <<  2,     UIControlEventTouchDragOutside    = 1 <<  3,     UIControlEventTouchDragEnter      = 1 <<  4,     UIControlEventTouchDragExit       = 1 <<  5,     UIControlEventTouchUpInside       = 1 <<  6,     UIControlEventTouchUpOutside      = 1 <<  7,     UIControlEventTouchCancel         = 1 <<  8,      UIControlEventValueChanged        = 1 << 12,     // sliders, etc.      UIControlEventEditingDidBegin     = 1 << 16,     // UITextField     UIControlEventEditingChanged      = 1 << 17,     UIControlEventEditingDidEnd       = 1 << 18,     UIControlEventEditingDidEndOnExit = 1 << 19,     // 'return key' ending editing      UIControlEventAllTouchEvents      = 0x00000FFF,  // for touch events     UIControlEventAllEditingEvents    = 0x000F0000,  // for UITextField     UIControlEventApplicationReserved = 0x0F000000,  // range available for application use     UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use     UIControlEventAllEvents           = 0xFFFFFFFF };



/**
* @author 张兴业
*  iOS入门群:83702688
*  android开发进阶群:241395671
*  我的新浪微博:@张兴业TBOW
*/

参考:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html


http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/Introduction/Introduction.html#//apple_ref/doc/uid/TP40006955-CH1-SW1




一、UIKit结构图








     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230732,如需转载请自行联系原作者




相关文章
|
7月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
10月前
|
JSON 监控 数据格式
Easy UI datagrid的学习
Easy UI datagrid的学习
135 0
|
JavaScript
【Vue学习】—Vue UI组件库(二十八)
【Vue学习】—Vue UI组件库(二十八)
|
XML 数据安全/隐私保护 数据格式
Morn UI 学习总结
Morn UI 学习总结
90 0
|
前端开发 JavaScript
【编写前端需要学习的知识】Vue2+Element-UI
【编写前端需要学习的知识】Vue2+Element-UI
109 0
|
开发框架 JavaScript 前端开发
HarmonyOS学习路之开发篇—Java UI框架(使用工具自动生成JS FA调用PA代码)
JS FA(Feature Ability)调用PA (Particle Ability)是使用基于JS扩展的类Web开发范式的方舟开发框架所提供的一种跨语言能力调用的机制,用于建立JS能力与Java能力之间传递方法调用、处理数据返回以及订阅事件上报的通道。开发者可以使用FA调用PA机制进行应用开发,但直接使用该机制需要开发者手动撰写大量模板代码,且模板代码可能与业务代码相互耦合,使得代码可维护性和可读性较差。
|
开发框架 JavaScript 前端开发
HarmonyOS学习路之开发篇—Java UI框架(JS FA调用Java PA)
使用兼容JS的类Web开发范式的方舟开发框架提供了JS FA(Feature Ability)调用Java PA(Particle Ability)的机制,该机制提供了一种通道来传递方法调用、处理数据返回以及订阅事件上。
|
XML Java 数据格式
HarmonyOS学习路之开发篇—Java UI框架(动画开发)
动画开发 动画是组件的基础特性之一,精心设计的动画使UI变化更直观,有助于改进应用程序的外观并改善用户体验。Java UI框架提供了帧动画、数值动画和属性动画,并提供了将多个动画同时操作的动画集合。
|
XML Java 数据格式
HarmonyOS学习路之开发篇—Java UI框架(自定义组件与布局 二)
自定义布局 当Java UI框架提供的布局无法满足需求时,可以创建自定义布局,根据需求自定义布局规则
|
17天前
|
人工智能 程序员 API
iOS|记一名 iOS 开发新手的前两次 App 审核经历
啥,这玩意也有新手保护期?
20 0

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 7
    iOS各个证书生成细节
  • 8
    uniapp云打包ios应用证书的获取方法,生成指南
  • 9
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 10
    Flame:开源AI设计图转代码模型!生成React组件,精准还原UI+动态交互效果