自学iOS开发系列----UI(视图编程入门:ViewController、UIImageView、UILabel)

来源:互联网 发布:怎么能做网络写手 编辑:程序博客网 时间:2024/05/20 05:58

更新完OC部分以后,公司通知我去成都参加安全支付大会,去了三天时间,回来以后把开会的内容做了汇总,刚忙完手头的事情才想起好几天没有更新过博客了。今天闲下来了,正好更新一下。
今天是第一篇UI的博客,主要讲一下ViewController(控制器)、UIImageView(图片视图)、UILabel(标签)。好了,废话不多说了,进入正题。

1.控制器的生命周期(这里就不详细叙述了,这个自行百度即可,主要讲解一下经常用到的两个。新手不建议现在就百度查询,可以等UI入门之后再详细了解,否则门都还没入,就可能被概念弄的一脸懵逼。我也会在UI进行到恰当的时候详细讲解一下AppDelegate和ViewController)

viewDidLoad     进行自定义数据以及动态创建其他控件(绝大多数操作在此方法中完成)viewWillAppear  视图将出现在屏幕之前(控制器切换的时候不一定会调用viewDidLoad方法,此时如有数据更新等其他操作可在此方法中完成)

2.控制器改变背景色
新建FirstView项目,在ViewController中编写代码
控制器

①ViewController.h

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end

②ViewController.m

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController//进行自定义数据以及动态创建其他控件- (void)viewDidLoad {    [super viewDidLoad];    /**command+R运行控制器颜色变为红色    *  UIColor是一个颜色类,通过类方法创建颜色对象    */    self.view.backgroundColor = [UIColor redColor];}//当内存不足时,收到警告,此方法现阶段暂时忽略- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

3.UIImageView
新建项目FirstImageView,并将下面的图片导入项目(按住图片,拖入项目即可,命名为beautiful_girl),直接百度美女图片也可。
beautiful_girl
①ViewController.h

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end

②ViewController.m

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    UIImageView *imageView = [[UIImageView alloc] init];    /**     *  frame(图片视图大小)     *  CGRectMake(视图的起点X坐标,视图的起点Y坐标,视图的宽,视图的高)     */    imageView.frame = CGRectMake(50, 100, 150, 200);    /**     * ①通常编码中将上述两个步骤合为一个步骤编写     * UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 150, 200)];    */    //②根据图片名称在图片视图上显示相应图片    imageView.image = [UIImage imageNamed:@"beautiful_girl.png"];    //③将图片视图添加到控制器上    [self.view addSubview:imageView];}@end

运行效果如图:
UIImageView

4.UILabel
新建项目FirstLabel

①ViewController.h

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end

②ViewController.m

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //1、UILabel对象的创建,并设置UILabel的显示位置和大小    UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 200, 20)];    //2、添加文字信息    label.text = @"我是第一个Label";    //3、设置标签背景颜色    label.backgroundColor = [UIColor yellowColor];    //4、设置字体颜色    label.textColor = [UIColor redColor];    /**      * 5.设置字体显示样式     * NSTextAlignmentCenter 居中     * NSTextAlignmentRight  居右     * NSTextAlignmentLeft   居左     */    label.textAlignment = NSTextAlignmentCenter;    //6、设置字体大小)    label.font = [UIFont systemFontOfSize:17];    //7、把label加到self.view上面    [self.view addSubview:label];    UILabel * label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 150, 200, 20)];    label2.backgroundColor = [UIColor blackColor];    label2.text = @"我是第二个Label";    label2.textColor = [UIColor whiteColor];    [self.view addSubview:label2];    /**     * 8.设置字体的阴影效果     * shadowOffset:阴影偏移量     * shadowColor:阴影颜色     */    label2.shadowOffset = CGSizeMake(1, -3);    label2.shadowColor = [UIColor purpleColor];    UILabel * label3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 200, 50)];    label3.backgroundColor = [UIColor brownColor];    label3.text = @"其实张艺谋从来不是一个善于讲故事的导演。从张艺谋的导演经历来看,张艺谋对于画面的掌控能力比较强,对于近现代题材有着很好地表现能力。其实看一下张艺谋早期参与的作品,从《红高粱》到《活着》,张艺谋的技巧是没得说的。这一时期,即便对于张艺谋的电影有争议,也只是局限在张艺谋是否通过暴露中国落后的一面来获得国际关注,但对于影片本身的质量,极少有人有质疑。及至《英雄》之后,《十面埋伏》、《满城尽带黄金甲》、《三枪拍案惊奇》几部电影前后脚上映,对于张艺谋的批评声音顿时多了起来。除了《英雄》还有一些可圈可点之处之外,后面几部真的是太掉价。《金陵十三钗》和《归来》的出现,让人又感叹那个让人熟悉的张艺谋又回来了。其实纵观张艺谋的经历,会发现张艺谋有两个比较严重的缺陷:第一,由于成长环境的限制,张艺谋的历史积淀并不高,所以一旦当题材超越出他的经验范围时,就容易跑偏;第二,张艺谋是摄影出身,摄影出身的导演普遍的特征是画面拍的比较好,但不太会讲故事。而对于幻想小说这种开脑洞的题材,张艺谋真的是无能为力的。我曾看过央视做的一期节目,里面邀请张艺谋和卡梅隆同台。节目最后,主持人让二人互相以对方为主角编一个故事。张艺谋的故事是:卡梅隆先生因为一个机缘巧合穿越到了唐朝,见到了当时最美丽的女人杨贵妃,跟他谈起了恋爱。卡梅隆的故事是:张先生是一个非常厉害的科学家,他一生中都在追寻一种世界上从没有过的梦幻般的颜色,有一天他听说外星球有这种颜色的矿石,于是张先生搭乘飞船来到了这个星球,然后他见到了这个星球的居民";    label3.textColor = [UIColor whiteColor];    label3.font = [UIFont systemFontOfSize:13];    /**     *  9、label默认的文字显示行数为1行,如果文字内容多于一行显示的内容,那么文字就会显示不完全     *  label3.numberOfLines = 3;表示如果文字不够三行,够几行,显示几行;如果文字超过三行,高度足够,只显示三行。一般设置为0,表示行数按照字体大小和label高度自动设置最大值。     *     */    label3.numberOfLines = 0;    //10、设置换行样式:NSLineBreakByTruncatingMiddle表示下面行数为以单词换行,行数不够,舍去尾行的行尾,显示省略号。    label3.lineBreakMode = NSLineBreakByTruncatingMiddle;    [self.view addSubview:label3];    UILabel * label4 = [[UILabel alloc] init];    label4.frame = CGRectMake(0, 250, 200, 20);    label4.backgroundColor = [UIColor grayColor];    label4.textColor = [UIColor whiteColor];    label4.text = @"我能想到最浪漫的事,就是唐嫣和罗晋在拍完锦绣未央以后真的走到了一起。恩,我实在编不下去了,但是不编字数又不够,好了,这下字数够了";    //11、设置文字自适应宽度,如果宽度不够,文字缩小,如果宽度过宽,文字不会放大    label4.adjustsFontSizeToFitWidth = YES;    [self.view addSubview:label4];}@end

效果如图:
UILabel
【小技巧】label3.lineBreakMode = NSLineBreakByTruncatingMiddle;例如设置换行样式等时,根据需求查看换行样式效果,长按command并单击NSLineBreakByTruncatingMiddle,查看枚举值。

小练习
将绿色控制器中,用15号字体显示蓝底红字的“程序员小咖”五个字。

参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)
新建Test项目,ViewController.h中不做任何操作

ViewController.m

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //command+单击UIColor 查看支持的颜色    self.view.backgroundColor = [UIColor greenColor];    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 200, 50)];    label.backgroundColor = [UIColor blueColor];    label.font = [UIFont systemFontOfSize:15];    label.textColor = [UIColor redColor];    label.text = @"程序员小咖";    [self.view addSubview:label];}@end
0 0