doproio / practice-of-ios

practice-of-ios
24 stars 4 forks source link

【第四章学习笔记】常用UI控件和常用类 #6

Open hkz404 opened 10 years ago

hkz404 commented 10 years ago

各类常用控件

自 iOS7 推出扁平化风格之后,下面的控件几乎都变了样。

qq20141008-1 2x

UILabel(标签视图)

作用:显示文本

常用属性

实例代码

UILabel * label = [[UILabel alloc] initWithFrame: CGRectMake(200, 0, 100, 25)];
label.backgroundColor = [UIColor clearColor]; 
label.textAlignment = UITextAlignmentCenter;
label.font = [UIFont systemFontOfSize: 14.0f];
label.numberOfLines = 2;  /* 默认是 1 行,0 表示无限制 */
label.lineBreakMode = UILineBreakModeCharacterWrap;
[label sizeToFit]; /* 根据本文自动调整 label 的宽度和高度 */

UIControl

作用:具有事件处理的控件的父类

事件响应的三种形式:基于触摸、基于值、基于编辑 qq20141008-2 2x

常用方法

/* 添加一个事件 */
- (void)addTarget: (id)target action: (SEL)action forControlEvents: (UIControlEvents)controlEvents

/* 移除一个事件 */
- (void)removeTarget: (id)target action: (SEL)action forControlEvents: (UIControlEvents)controlEvents

控制视图的事件处理

作用:响应用户的点击事件

常用方法

setTitle: (NSString *)title forState: (UIControlState)state;
setTitleColor: (UIColor *)color forState: (UIControlState)state;
setImage: (UIImage *)image forState: (UIControlState)state;
setBackgroundImage: (UIImage *)image forState: (UIControlState)state;
addTarget: (id)target action: (SEL)action forControlEvents: (UIControlEvents)controlEvents

可以发现每个方法都有 forState,它有几个值:

作用:文本输入控件,用于用户输入文字

常用属性

实例代码:

UITextFiled * tf = (UITextField *)[self.window viewWithTag: 1];
tf.borderStyle = UITextBorderStyleRoundedRect;

/* 将键盘作为第一响应者(点击其他地方可以移除键盘) */
[tf resignFirstResponder];

代理方法:

/* 将要开始输入时调用 */
- (BOOL)textFieldShoudBeginEditing: (UITextField *)textField {
    NSLog(@" 将要开始输入");
    return YES; /* NO 则唤起不了键盘 */
}

/* 开始输入时调用 */
- (BOOL)textFieldDidBeginEditing: (UITextField *)textField {
    NSLog(@"开始输入");
    return YES;
}

/* 将要结束时调用 */
- (BOOL)textFieldShoudEndEditing: (UITextField *)textField {
    NSLog(@" 将要输入结束");
    return YES;
}

/* 已经结束时调用 */
- (BOOL)textFieldDidEndEditing: (UITextField *)textField {
    NSLog(@"输入结束");
    return YES; /* NO 则收不回键盘 */
}

/* 内容改变事件 */
- (BOOL)textField: (UITextField *)textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *)string {
    NSLog(@"%@", string); /* 输出每次输入的字符串 */
    return YES; /* NO 则点了键盘输不出字符 */
}

/* 清除文字按钮事件 */
- (BOOL)textFieldShoudClear: (UITextField *)textField {
    NSLog(@"清除输入内容了");
    return YES;
}

/* 键盘上的 return 按钮 */
- (BOOL)textFieldShoudReturn: (UITextField *)textField {
    /* 隐藏输入键盘 */
    [textField resignFirstResponder];
    return YES;
}

UISlider

作用:控制系统声音,或者表示播放进度等

常用属性

示例代码

UISlider * slider = [[UISlider alloc] initWithFrame: CGRectMake(20, 0, 150, 25)];
slider.maximumValue = 100;
slider.minimumValue = 0; /* maximumValue 和 minimumValue 必须设置在 value 之前 */
slider.value = 50;

[slider setValue:50 animated: YES];
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];

UISegmentedControl

作用:分段控件,页面的切换等。

示例代码

NSArray * array = [NSArray arrayWithObjects: @"选择", @"搜索", @"工具", nil]; /* 此处也可以是一个图片数组 */
UISegmentedControl * segmentCtrl = [[UISegmentedControl alloc] initWithItems: array];
segmentCtrl.frame = CGRectMake(20, 0, 150, 25);
segmentCtrl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentCtrl.selectedSegmentIndex = 0;
[segmentCtrl addTarget:self action:@selector(segmentAction:) forControlEvents: UIControlEventValueChanged];

UIPageControl

作用:通常与 UIScrollView 连用,提示用户当前显示的页数

常用属性

常用属性和方法

系统状态栏中显示菊花的方法:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: YES];

UIAlertView

作用:警告视图(弹出框),提示用户,帮助用户选择

代码示例

/* 位置和尺寸不需要设置,默认有了 */
UIAlertView *alertview = [[UIAlertView alloc] initWithTitle: @"标题" message:@"提示文本信息" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", @"还可以有其他按钮" , nil];
[alertview show];

- (void)alertView: (UIAlertView *)alertView clickedButtonAtIndex: (NSInteger)buttonIndex {}

UIActionSheet

作用:警告视图(从下面网上弹出),提示用户,帮助用户选择

代码示例

/* 位置和尺寸不需要设置,默认有了 */
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle: @"标题" message:@"提示文本信息" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"关闭" otherButtonTitles:@"还可以有其他按钮" , nil];

[as showInView: self.window];

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

UIImageView

常用属性

-2

评分标准:界面还原(4分),通过输入框下面的滑动条可以调节文本框字体大小(8分),自定义键盘,可快速插入颜文字(12分),若文本输入框没有内容,按下键盘的 return 键时弹出警告框(16分)

fayching commented 10 years ago

UITextFiled 拼错了

jeakey commented 10 years ago
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if ([txtView isFirstResponder] && [touch view] != txtView) {
        [txtView resignFirstResponder];
        [self checkText:txtView.text];
    }
    [super touchesBegan:touches withEvent:event];
}

可以通过这种方式来实现点击空白隐藏键盘

hkz404 commented 10 years ago

Jundabei 4分 Bindy 16分 Faycheng 16分 Jeakeyliang 16分