黑马程序员技术交流社区

标题: iOS开发——UI组件(个人整理) [打印本页]

作者: holmesconan    时间: 2015-12-26 23:59
标题: iOS开发——UI组件(个人整理)
UIButton
这个就不多说了,对照官方的文档也可以更多的去学习。插一句题外话,在学这些组件的时候,最令人头疼的不是你搞不定一个组件的某个属性或者方法,而是你压根儿不知道有这个东西。所以在学习这些组件的时候最好的方式还是通过官方文档,虽然已开始可能有些困难,但是硬着头皮去啃,就一定会有悟道的那一天。建议有问题先去看文档,如果实在不行再去Google啊,Stack Overflow啊神马的。
UIAlertController
弹出式的提示框。现在市面上的书籍包括网上的一些资料都还停留在iOS8之前的时代,那个时候的弹出框是一个叫做UIAlertView的东西,但是现在,在XCode7和iOS9的时代,你会发现这个东西被弃用了。苹果自iOS8开始,废除了UIAlertView而改用UIAlertController来控制提示框。
来看看UIAlertController的实现吧,下面这个程序是我在练习UITableView时的代码,实现了一个类似与通讯录的东西,我们抓住主要矛盾,来看点击某一行cell后,弹出的消息提示框是怎么实现的。以下代码在ViewController.m中实现。
//创建提示框窗口
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"System Info" message:[contact getName] preferredStyle:UIAlertControllerStyleAlert];
//实例化取消按钮  
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
    //点击取消按钮后控制台打印语句。
    NSLog(@"The \"Okay/Cancel\" alert's cancel action occured.");
}];
//实例化确定按钮   
UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    NSLog(@"The \"Okay/Cancel\" alert's other action occured.");
    //下面这段代码不用管它,简单点讲就是获取当前行的一个字符串。
    UITextField *textfield = alertController.textFields[0];
    KCContactGroup *group = _contacts[_selectedIndexPath.section];
    KCContact *contact = group.contacts[_selectedIndexPath.row];
    contact.phoneNumber = textfield.text;
    NSArray *indexPaths = @[_selectedIndexPath];
    [_tableview reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
}];
//向弹出框中添加按钮和文本框
[alertController addAction:cancelAction];
[alertController addAction:otherAction];
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
    // 可以在这里对textfield进行定制,例如改变背景色等
    textField.text = contact.phoneNumber;
}];
//将提示框弹出
[self presentViewController:alertController animated:YES completion:nil];

实现了大概就是这个样子,文本框里的东西是从cell里面提取的。
这里还有一句题外话要讲。网上是没有任何关于最新的UIAlertController的使用教程的,我自己用了整整一个下午看官方文档一步一步调试才实现了这个恼人的提示框。官方的文档真的是个好东西,越用越强大!
UISegmentedControl
分段控件,就是一栏按钮集成在一排里。很简单,就像Button一样。这个样子的:
UISwtich
按钮控件,手机里开飞行模式的那个东西。通过Storyboard可以很快很方便的建立,不要忘了关联起来就好。
这里简单讲一下它的纯代码实现,其实包括上面的UISegmentedControl,还有下面的一些简单控件它们手写实现的方法都是一样的。截张图给大家说明一下就好了,都是一样的,后面的类似的控件也不多啰嗦了。
UISlider
进度条型的选择控件,对应数值,可以进行设置音量等操作,根据官方文档可以看到很多关于它的设置,基本实现同上。
UIPageControl
重要的事情说三遍。个人认为,它虽然很小,但绝对逼格够高,搭配UIScrollView,绝对让你的界面高端起来。

关于这个的代码不小心被我删掉了,没法给大家展示,不过过几天我会用这个做一个APP的欢迎界面,到时候再展示咯。

UITextField

简单控件,可以参考先前的传值操作(传送门:iOS开发——从一道题看Delegate),基本上把这个的用法实现的差不多了,要想更多地设置它————官方文档见。

UIDatePicker

顾名思义,日期选择控件。实现同上。

UIScrollView

有的时候呢,我们的照片,或者图片会很大,而允许我们输出的窗口却不够大,那么我们就需要这个家伙来帮忙了,它可以让一张图片在一个视图里滚动展示,效果类似于。。。做B超?(天,怎么会有这种脑洞大开的比喻)
大概就是这样整的:
UITextView

还是一个可编辑文本框,与先前的UITextField不同的是,这个可以显示更多行的内容,还可以对他进行编辑的监控,通过代理方法,我们可以获取该文本框中的内容,在实际的应用中,发布什么长微博啊,文本啊,都能用到它。

这里实现没什么好说的,主要来看看它的几个代理方法:



UIToolbar

开发中经常会用到的控件之一,实现起来也很简单,与此同时我们还要知道 UIBarButtonItem 和 Fixed Space Bar Button Item,这两个小东西是在Bar上的按钮和间距,都被对象化了。

来看代码:

       
#import "ViewController.h"
@interface ViewController ()
//声明
@property (nonatomic, strong) UIToolbar *mytoolbar;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    //实例化
    self.mytoolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 30)];
    //添加到视图
    [self.view addSubview:self.mytoolbar];
    //选择风格,这里我们选择黑色风格
    self.mytoolbar.barStyle = UIBarStyleBlack;
    //添加按钮和按钮之间的间距,这些都被对象化了,按钮是可以实现方法的
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc]initWithTitle:@"hello" style:UIBarButtonItemStylePlain target:self action:@selector(sayhello)];
    UIBarButtonItem *fixed = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc]initWithTitle:@"bye" style:UIBarButtonItemStylePlain target:self action:@selector(saybye)];
    //实例化的UIToolbar里面有items属性,是一个数组,用来存放我们要加上去的按钮
    self.mytoolbar.items = @[item1, fixed, item2];
}
//点击item要实现的方法,输出hello或者bye
- (IBAction)sayhello{
    NSLog(@"hello");
}
- (IBAction)saybye{
    NSLog(@"bye");
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

UIPickerView

与前面的时间选择类似,只不过这个你可以自己设置内容。

UITableView

BOOM!

强大,异常强大。不多说,我推荐看iOS开发系列--UITableView全面解析这篇文章,写得很棒。

我自己也把大部分的学习时间用在了它的学习上,至今为止我觉得我还没能真正做到熟练地使用它,等以后成熟了,再写吧。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2