自学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),直接百度美女图片也可。
①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
运行效果如图:
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
效果如图:
【小技巧】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
- 自学iOS开发系列----UI(视图编程入门:ViewController、UIImageView、UILabel)
- 自学iOS开发系列----UI(视图编程入门:UIButton)
- 自学iOS开发系列----UI(视图编程入门:UIView)
- 自学iOS开发系列----UI(视图编程入门:UINavigationController)
- 自学iOS开发系列----UI(视图编程入门:UITabBarController)
- 自学iOS开发系列----UI(视图编程入门:UIGestureRecognizer)
- 自学iOS开发系列----UI(视图编程入门:UIScrollView)
- iOS开发系列----UI(视图编程入门:Delegate、Block、单例、属性传值)
- IOS开发UI系列之常用控件 UILabel, UITextField, UIButton, UIImageView等常用属性与方法
- IOS 开发-UI初级 (二)视图和视图控制器(View,Viewcontroller)
- iOS开发UI系列之UIImageView的基本使用
- iOS开发UI系列之UILabel的基本使用
- iOS开发笔记-UI-UIlabel
- UI控件笔记(二):UI之UILabel和UIImageView
- UI 视图编程入门
- iOS系列UI篇——UIImageView
- IOS开发之UI设计---视图交互与事件(UIButton,UIImage,UIImageView,UIController)
- iOS从入门开发系列01 (UI基础控件)
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- iOS-创建9宫格代码
- centos7 配置vsftpd,命令记录
- 【排序】基数排序
- angular.js依赖注入
- 自学iOS开发系列----UI(视图编程入门:ViewController、UIImageView、UILabel)
- 2)mysql 单表的增删改查,以及子查询,关联查询
- angularJS的$watch失效问题的解决方案
- MD5加密——3行代码
- NSCache
- (实用篇)PHP不用递归遍历目录下所有文件的代码
- android http 和https请求
- Java 安全模型介绍
- 算法篇-4-动态规划-凸多边形最优三角剖分&图像压缩最优分段&电路布线