您的位置:首页 > 其它

常用界面控件种类和使用方法、常用控件的事件响应方法、常用内置视图种类和使用方法

2015-04-07 10:55 459 查看
一. 常用界面控件种类和使用方法
1.UISegmentControl (分段控制器)

2.UISlider(滑块)

3.UISwitch(开关)

4,UIActivityIndicatorView(加载指示器)

5.UIProgressView(进度条)

6,UIStepper(步控件)

7.UITextView (文本输入)

8.UILabel (显示信息)

9.UIButton(按钮)

10.UITouch(触摸)

10.UITextField

11.UINavigationController(导航控制器)

11.UIToolbar

12.UIImageView(视图)

13.UISearchbar(搜索按钮)

14.UIActionSheet(实现硬编码按钮)

15.UIAlertView

16.UITabBarController

17.UIPickerView

18.UIControl (创建用户界面控件对象)
19.UIDatePicker (日期/时间选取器)
20.UIScrollView
21.UITableView
21.UIPageControl (用来控制翻页)

1、UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 50, 320, 2)];

2、UIButton *button =
[UIButton
buttonWithType:UIButtonTypeCustom];

3、RootViewController *rootVC = [[RootViewController alloc] init];

4、UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

5、UITextField *tf = [[UITextField alloc]
initWithFrame:CGRectMake(10, 50, 300, 40)];

6、UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 44,self.view.frame.size.width, 44)];

7、UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)];

8、UITapGestureRecognizer *tapOneGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapOne:)];

9、AppDelegate *app = [[UIApplication sharedApplication] delegate];
10、UIControl *control = [[UIControl alloc]
initWithFrame:CGRectMake(100, 40, 80, 40)];

二. 常用控件的事件响应方法

触摸响应
了解UIView的触碰响应之前,首先了解在iOS中触碰事件是什么,事件在视图模型中是如何传递的,视图在接收到一个事件是如何响应的。下面介绍触碰事件类UITouch和响应者链来解释事件的工作原理。
在iOS中UITouch类代表触碰事件。当用户触摸屏幕后就会产生相应的事件,所有相关的UITouch对象都被包装在事件中,被程序交由特定的对象处理。UITouch对象包括触碰的详细信息。
UITouch含有5个属性:
window:触碰产生时所处的窗口,由于窗口可能发生变化,当前所在的窗口不一定是最开始的窗口。
view:触碰产生时所处的视图。由于视图可能发生变化,当前视图也不一定是最初的视图。
tapCount:短时间内轻击(tap)屏幕的次数,可根据tapCount判断单击、双击或更多的轻击。
timestamp:时间戳记录了触碰事件产生或变化时的时间。单位是秒。
phase:触碰事件在屏幕上有一个周期,即触碰开始、触碰点移动、触碰结束,中途取消。通过phase可以查看当前触碰事件在一个周期中所处的状态。UITouchPhase枚举:
UITouchPhaseBegan
UITouchPhaseMoved
UITouchPhaseStationary
UITouchPhaseEnded
UITouchPhaseCancelled

当手指触碰到屏幕,无论是单点还是多点触碰,事件都会开始,直到用户所有的手指都离开屏幕。期间所有的UITouch对象都被封装在UIEvent事件对象中,由程序分发给处理者。事件记录了这个周期中所有触碰对象状态的变化。
只要屏幕被触摸,系统会将诺干个触碰信息封装到UIEvent对象中发送给程序,由管理程序UIApplication对象将事件分发。

响应者对象就是可以响应事件并对事件作出处理的对象。在iOS中UIResponder类定义了响应者对象的所有方法。UIApplication、UIWindow、UIViewController、UIView以及UIKit中继承自UIView的控件都间接或直接继承自UIResponder类,这些类都可以当做响应者。
响应者链表示一系列响应者对象组成的事件传递的链条。当确定了第一响应者后,事件交由第一响应者处理,如果第一响应者不处理事件沿着响应者链传递,交给下一个响应者。一般来说,第一响应者是UIView对象或者UIView的子类对象,当其被触摸后事件交由它处理,如果它不处理,事件就会交给它的UIViewController处理(如果存在),然后是它的superview父视图对象,以此类推,直到顶层视图。如果顶层视图不处理则交给UIWindow对象处理,再到UIApplication对象(如果UIApplication继承自UIResponder)。如果整个响应者链都不响应这个事件则该事件被丢弃。
三. 常用内置视图种类和使用方法
当手指触摸 后,ScrollView会暂时拦截触摸事件,并开启一个计时器。假如在计时器到点后没有发生手指移动事件,那么ScrollView发送、 tracking events到被点击的subview;假如在计时器到点前发生了移动事件,那么ScrollView取消tracking,自己发生滚动。

初始化

1 UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGMakeSize(0.0,0.0,self.view.frame.size.with,600)];

一、深入分析UIScrollView

1、由于移动设备自身的限制,当某些视图滚出可见范围时,应该如何处理,如何重用可视的空间,减少内存的开销。

2、UIScrollView是UITableView和UITextView的超类。它的核心理念:UIScrollView 是一个可以在内容视图之上调整自己原点坐标的视图。它根据自身框架的大小,裁剪视图中的内容。通常框架是和应用程序窗口一样大。可以根据手指的移动,调整 原点的位置,这个原点位置就是滚动视图的偏移量。展示内容的视图会根据滚动视图的原点位置,开始绘制视图的内容。UIScrollView必须知道内容视图的大小,以便于知道什么时候停止,一般当滚动出内容的边界时,它就返回了。

UIScrollView必须知道一个触摸信号是打算滚动还是打算跟踪里面的子视图。为了达到这个目的,它临时中断了一个touch-down事件,通过建立一个定时器,在定时器开始行动之前,看是否触摸的手指做了任何的移动。假如定时器运行中没有任何的大的位置改变,UIScrollView就发送一个跟踪事件给触摸的子视图;如果在定时器消失前,用户拖动手指足够远,UIScrollView就取消子视图的任何跟踪事件,而滚动它自己。

子类可以通过重载touchesShouldBegin:withEvent:inContentView:、pagingEnabled和touchesShouldCancelInContentView:方法,从而影响滚动视图的滚动手势。

UIScrollView 类有一个delegate,需要适配的协议是UIScrollViewDelegate。为了缩放和平铺工作,代理必须实现 viewForZoomingInScrollView:和scrollViewDidEndZooming:withView:atScale:方法。

在UIScrollView对象中,不应该嵌入任何UIWebView和UITableView,否则会出现一些异常情况,因为两个对象的触摸事件可能被混合,从而被错误的处理。

二、UIScrollView简单使用

1、拖动一个UIScrollView控件到IB,在上面添加6个标签。设置第六个标签在可见范围外,可以直接设置坐标值。如下图所示:

2、将UIScrollView添加输出口,设置为theScroller,其它保留默认。

3、支持滚动

为给可滚动视图添加滚动功能,需要将属性contentSize设置为一个CGSize值。CGSize是一个简单的C语言数据结构,它包含高度和宽度,可使用函数CGSize(<with>,<height>)创建一个这样的对象。

例如要告诉该可滚动视图(theScroller)可水平和垂直分别滚动到280点和600点,可在viewDidLoad方法中编写如下代码:

1 self.theScroller.contentSize = CGSizeMake(280.0,600.0);

注:我在测试的时候,没有添加该行代码,但是运行的时候仍能滚动。。。

补充:

原来开始我认为的滚动,只是bounces(橡皮筋)属性和IOS 6新增的AutoLayout属性的作用,设置了AutoLayout,而bounces属性默认是true的,当我按住键盘不放,往下滚动的时候,确实可以看到第六个标签。

所以真正要让ScrollView能够滚动,还是需要去设置contentSize的。

4、运行效果

进度条:
UIProgressView 进度条
你可以使用UIProgressView类来描绘一段时间内某任务的进度。使用进度条的一个例子就是你在邮件中下载相关信息时显示在底部的东西
// 在.h或是类别中声明progressView,在此初始化
progressView = [[UIProgressView alloc]

initWithFrame:CGRectMake(20, 200, 300, 10)];

// 如果是放在toolBar上使用UIProgressViewStyleBar
progressView.progressViewStyle = UIProgressViewStyleDefault;

// 进度条显示进度部分的颜色
progressView.progressTintColor = [UIColor orangeColor];

// 进度条未显示进度部分颜色
progressView.trackTintColor = [UIColor brownColor];

[self.view addSubview:progressView];
UIActionSheet 行动表

UIActionSheet 用来对指定的事件向用户呈现一系列的操作;也可以用来提示用户确认有些带有危险性的操作;ActionSheet包含一个可选的标题和一个或多个按钮,其中每一个对应于要执行的操作

1、声明代理

<UIActionSheetDelegate>

2、初始化加载

// 简单初始化显示

UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"选择操作" delegate:self cancelButtonTitle:nildestructiveButtonTitle:@"删除" otherButtonTitles:@"取消", nil];

// 用tag值来分辨是代理方法调用时哪个actionSheet

sheet.tag = 10;

[sheet showInView:self.view];

// 按钮比较多时,将按钮标题放在数组中遍历插入

UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"选择操作" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:nil];

actionSheet.tag = 100;

for(NSString *title in array){

[actionSheet addButtonWithTitle:title];

}

[actionSheet showInView:self.view];

// 在iPad上显示带箭头的actionSheet,在iPhone上只能从底部弹出,如需在iPhone上出现带箭头的形势

// 从某个位置弹出

[actionSheet showFromRect:CGRectMake(20, 30, 100, 100) inView:self.viewanimated:YES];

// 从导航栏右键弹出

[actionSheetshowFromBarButtonItem:self.navigationController.navigationItem.rightBarButtonItemanimated:YES];

实现代理方法

#pragma mark - UIActionSheetDelegate

-(void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

if(actionSheet.tag == 10) {

NSLog(@"sheet clicked index = %d",buttonIndex);

}

elseif(actionSheet.tag == 100){

NSLog(@"actionSheet clicked index = %d",buttonIndex);

}

}

UIAlertView警告
使用UIAlertView向用户提示一条警告消息,Alert View功能与ActionSheet类似,但是外观上有所不同(UIActionSheet的一个实例)

UIAlertView*alert = [[UIAlertView alloc] initWithTitle:@"是否删除" message:@"删除后不可撤销" delegate:selfcancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];

alert.tag= 20;

[alertshow];
#pragmamark - UIAlertViewDelegate
-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag==20) {
NSLog(@"youclicked:%@",[alertView buttonTitleAtIndex:buttonIndex]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: