UI 第一天

news/2024/11/24 4:31:56/


1.1 什么是iOS

iOS是由苹果公司开发的移动操作系统。苹果最早于2007年1月9日的Macworld大会上公布这个系统,原本这个系统名为iPhone OS,因为iPad,iPhone,iPod touch都使用iPhoneOS,所以2010WWDC大会上宣布改名为iOS。

i->i->intelligence (智能) i->innovation(创新) i->internet(网络 ) iCEO -> interim(临时)iOS

2007年10 iOS1.0 —— 革命的开始(iPhone Runs OS X)一个不能更换铃声和壁纸,不能运行后台程序,甚至根本没有第三方应用的手机,许多新奇的玩法,像3.5英寸480*320分辨率的大屏幕、多点触控的交互方式以及从未⻅过的简洁UI,尽管iPhone的出现起初只是为了挽救在当时急剧萎缩的iPod市场

2008年3月 iOS 2.0 ——真正的iOS,生态环境初建成

当年7月推出App Store,这是iOS历史上的一个重要里程碑,它的出现开启了iOS和整个移动应用时代。收入三七分成的制度和良好的生态环境迅速吸引了大量开发者。

2009年3月 iOS 3发布—— 再度完善
Phone OS 3.0更像是填补前两代系统的空白。例如键盘的横向模式、新邮件和短信的推送通知等,

2010年6月 iOS 4发布 ——高颜值模式
iPhone OS操作系统在这一代正式更名为iOS。乔布斯及其设计团队为界面上的图标设计了复杂的光影效果,让让界面看上去更加漂亮。除了操作系统之外,与iOS4同期的iPhone4也是前所未有的漂亮,首次引入了前后双玻璃的设计,厚度也仅有9.2mm,创下了全球最薄智能手机的记录。

2011年6月 iOS 5发布 —— 你好,siri

为苹果用户带来了一项非常重要的新功能:Siri。调戏Siri就成了iPhone 4S用户的一大乐趣。iOS5时代还有一项重大的改变:App Store终于支持人民币支付了。

2012年6月 iOS 6发布——扭曲的世界苹果采用了全新设计的地图软件,

2013年6月 iOS 7发布——扁平化只是开始

乔纳森带领的设计团队这一次彻头彻尾重新设计了iOS系统。在这个版本中还添加了中国人较为喜爱的九宫格输入法

2014年6月 iOS 8发布——更加开放的系统

苹果对旗下所有平台进行了整合,使其生态环境愈发完善。Continuity功能的加入使苹果旗下的产品联系更紧密了,利用iOS 8中新增的Continuity,可以继续在另一台iOS设备上未做完的事情了。

2015年9月 iOS 9发布——降低升级⻔槛
最令人意外的是苹果这次把iOS 9的升级⻔槛控制在与上一代的iOS8相同,支持的升级设备与iOS 8相同,也就是说连iPhone4s也可以取得升级,iPhone 4s作为历史最受欢迎的iPhone手机之一,这无疑是一个天大的好消息。为什么苹果的标志是被咬了一口,为了区别于樱桃
1.2 什么是UI

UI全程User Interface(用户接口)通过UI我们和程序进行交互,传入我们的请求,反馈运行的结果。如果仅限于iOS程序,看得⻅摸得着的都是Ui,推荐的书:《UIKit框架详解》术语:UI、APP、API
- UI: User Interface (用户界面/接口)

- App: Application (应用程序)
- API:Application Programming Interface (应用程序编程接口)
1.3 使用空模板创建一个IOS工程

//空模版存放路径

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Li-brary/Xcode/Templates/Project Templates/iOS/Application

Product Name :项⺫名称

Organization Name : 组织名Organization Identifier: 组织标识Bundle Identifier : 唯一标示Language : 开发语言

Devices : 设备

XCode的上方是工具栏,有很多工具按钮。 Xcode的左侧是导航区域,包括:

项⺫导航 Command+1符号导航 Command+2搜索导航 Command+3问题导航 Command+4

在这里出现
测试导航 Command+5调试导航 Command+6断点导航 Command+7日志导航 Command+8

历史记录

CocoaTouch中常用的framework

包含项⺫所有的文件
集中了所有的工作区中定义的符号
对工作区中的所有文件执行搜索
构建项⺫过程中出现的任何错误和警告都会
测试程序导航
进入调试过程的主视图
查看设置的所有断点
保留开发人员最近的构建结果和运行日志的

iOS系统架构可以分为如下图所示的4层,CocoaTouch框架的地位不言而喻。CocoaTouch Layer(可触摸层):该框架基于iOS应用层直接调用层,如触摸事件、照相管理等,该层包含UIKit框架和Foundation框架。
Media Layer(媒体层):该层框架和服务依赖Core Services层,向CocoaTouch层提供画图和多媒体服务,如声音、图片、视频等。
Core Services Layer(核心服务层): 提供核心服务,例如字符串处理函数、集合管理、⺴络管理、URL处理工具、联系人维护、偏好设置等。
Core OS Layer(核心操作系统层):包含核心部分、文件系统、⺴络基础、安全特性、能量管理和一些设备驱动,还有一些系统级别的API。

在CocoaTouch层中很多技术都是基于Objective-C语言的。Objective-C语言为iOS提供了像集合、文件管理、⺴络操作等支持。像UIKit框架,它为应用程序提供了各种可视化组件,比如像窗口(Window)、视图(View)和按钮组件(UIButton)。Cocoa Touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架、获取照片信息功能的框架、负责加速感应器和三维陀螺仪等硬件支持的框架。

1.4 项⺫的⺫录结构介绍

NewHelloWorldSupporting FilesFrameworksProducts

包含编写的大部分代码以及组成应用程序界面的文件包含所需要的非oc类的源代码文件和资源文件特殊的库,也包含图像和声音文件等资源

    包含项⺫构件时所生成的应用程序

文件模板库(file template library)--包含一些文件模板。代码片段库(code snippet library)--包含一些代码片段。对象库(object library)--包含各种可重用对象。媒体库(media library)--包括用户所有的媒体文件。

1.5 应用程序的生命周期

//
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

NSLog(@"1. ");

return YES;}

//
- (void)applicationWillResignActive:(UIApplication *)application {

// SMS

// 3D NSLog(@"2. ");

}

//
- (void)applicationDidEnterBackground:(UIApplication *)application{

//

// applicationWillTerminate NSLog(@"3. ");

}

//
- (void)applicationWillEnterForeground:(UIApplication*)application {

//

    UIApplication * app = [UIApplication sharedApplication];

NSLog(@"4. ");}

//
- (void)applicationDidBecomeActive:(UIApplication *)application {

//

NSLog(@"5. ");}

//
- (void)applicationWillTerminate:(UIApplication *)application {

//

//info.plist -> Application does not run in background ->NO YES

NSLog(@"6. ");

}

// -(void)applicationDidReceiveMemoryWarning:(UIApplication*)application
{

// , NSLog(@"7. ");

}

main函数⻛骚的打了酱油,仅仅去调用了一个叫做UIApplicationMain的函数。UIApplicationMain函数会创建一个UIApplication的对象。每个iOS应用都有且仅有一个UIApplication对象,该对象的作用是维护一个消息循环,监听应用程序的各种事件并执行

相应地回调方法(callback method)。回调是一种常⻅的编程模式,当我们知道一件事情发生的时候要做什么,但是并不知道这件事情什么时候会发生就会用到回调的编程模式,注册一系列的回调方法,当事件发生时通过委托的对象调用这些方法。


1.main
2.UIApplicationMain
*
UIApplication
* UIApplication delegate

3.delegate ( ) ( storyboard)
*
, application:didFinishLaunchingWithOptions:


* application:didFinishLaunchingWithOptions: UIWindow* UIWindow rootViewController
*

1.6 UIWindow呈现的原理

// 应用程序加载完成时回调此方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//1.初始化窗体
_window = [[UIWindow alloc]initWithFrame:[[UIScreen

mainScreen]bounds]];//2.

_window.backgroundColor = [UIColor whiteColor];//3.
WLViewController * vc = [[WLViewController alloc]init];//4. _window.rootViewController = vc;//5.

[_window makeKeyAndVisible];return YES;

}

一个应用程序只有一个UIWindow的对象window必须得设置根视图控制器(主显示⻚面)每一个视图控制器UIViewController都自带一个UIView把某个UIViewController设置成根视图控制器则会把它自带的View添加到Window上,全屏显示

================== 控件 =================
【UILabel】UILabel是一个视图类,即UIView的子类,在iOS程序中,看的⻅,摸得着的,都是UIView的子类。UILabel是标签视图,用于显示文字信息

//UILabel常用属性

//
UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(50, 20,200, 50)];
// x, y , weight, height
label.frame = CGRectMake(60, 200, 200, 400);
//

label.text = @"i'm label! i'm a beautiful label! i love myself and
i am just a label!";

// tag
label.tag = 91;
//
label.font = [UIFont boldSystemFontOfSize:20];//

label.font = [UIFont fontWithName:@"Arial" size:25];//
NSArray * fonts = [UIFont familyNames];NSLog(@" :%@",fonts);

//
label.textColor = [UIColor blackColor];// label
label.textAlignment = NSTextAlignmentCenter;/*

NSTextAlignmentCenter =1 NSTextAlignmentLeft =0 NSTextAlignmentRight =2 */

// label 1 0 label.numberOfLines = 3;
// label = clear label.backgroundColor = [UIColor yellowColor];//

label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

/* ios6 7.1 UIBaselineAdjustmentAlignCenters label UIBaselineAdjustmentAlignBaseLines label UIBaselineAdjustmentNone label */

// label Xcode6.2 numberOfLines=1

//label.adjustsFontSizeToFitWidth = YES;

//
label.highlighted = YES;
//
label.highlightedTextColor = [UIColor redColor];// >0 <0 >0 <0 //label.shadowOffset = CGSizeMake(20, 20);
//

//label.shadowColor = [UIColor greenColor];

// label

// label.userInteractionEnabled = YES;// NO

// NO enabled=NO YES label.enabled = YES;
//
label.lineBreakMode = NSLineBreakByTruncatingTail;

/*
NSLineBreakByCharWrapping
NSLineBreakByWordWrapping NSLineBreakByClipping NSLineBreakByTruncatingHead ...NSLineBreakByTruncatingMiddle ...NSLineBreakByTruncatingTail ...
*/

// view label label.center = self.view.center;// label view
[self.view addSubview:label];

【UIButton】

UIButton和UILabel都是UIView的子类型,UIView及其子类型都代表一个矩形区域,UILabel直接继承了UIView,而UIButton的父类UIControl继承了UIView,这有什么区别吗?答案是肯定的,UIView有一个叫做userInteractionEnabled的属性,UIView将其默认值设置为YES,但UILabel的这个属性默认是NO。换句话说,只有UIControl的子类将这个属性设置为YES,因此这些控件在默认的情况下是交互型控件,能够跟用户进行交互,比如UIButton可以接受用户点击的操作,而且UIControl的子类可以通过addTarget方法设置要处理的事件及其处理代码。

如何创建UIButton的对象

//1.
UIButton * btn1 = [[UIButton alloc]init];btn1.frame = CGRectMake(50, 50, 50, 50);

    UIButton * btn2 = [[UIButton
alloc]initWithFrame:CGRectMake(100, 50, 50, 50)];
    UIButton * btn3 = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
    btn3.frame = CGRectMake(150, 50, 50, 50);
/*

UIButtonTypeCustom = 0, 自定义button type

// no

UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), 系统 // standardsystem button

UIButtonTypeDetailDisclosure, 详情UIButtonTypeInfoLight,灰色信息

UIButtonTypeInfoDark,白色信息UIButtonTypeContactAdd,加号

UIButtonTypeRoundedRect = UIButtonTypeSystem, 圆角//Deprecated, use UIButtonTypeSystem instead
*/

//UIButton常用事件详解

//设定坐标
button.frame = CGRectMake(50, 50, 200, 200);

//设置背景色

    button.backgroundColor = [UIColor redColor];
btn1.backgroundColor = [UIColor colorWithRed:COLOR green:COLOR
blue:COLOR alpha:1];

//button状态1.normal正常 2. highligth高亮 3.disable禁用//4.select选择

//设置字体,跟UILabel设置是一样的

    button.titleLabel.font = [UIFont systemFontOfSize:40];
btn3.titleLabel.font = [UIFont italicSystemFontOfSize:25];

//设定标题颜色

    [button setTitleColor:[UIColor blueColor]
forState:UIControlStateNormal];
    [button setTitleColor:[UIColor grayColor]
forState:UIControlStateHighlighted];
 [btn1 setTitleColor:[UIColor colorWithRed:COLOR green:COLOR
blue:COLOR alpha:1] forState:UIControlStateNormal];

//设置标题
[button setTitle:@"正常" forState:UIControlStateNormal];[button setTitle:@"高亮" forState:UIControlStateHighlighted];//设置button为禁用状态
//[button setEnabled:NO];
[button setTitle:@"禁用" forState:UIControlStateDisabled];

//设置图片
//1.设置前景图
//[button setImage:[UIImage imageNamed:@"untitled.jpg"]

forState:UIControlStateNormal];

//2.设置背景图

    //[button setBackgroundImage:[UIImage
imageNamed:@"untitled.jpg"] forState:UIControlStateNormal];

//bundle包:程序和资源文件会上传到appStore
//UIImage imageNamed
方法会加载图片到内存中不释放,小图片可以,大图片用其

他方法加载。//png格式的图片支持镂空,iOS应用中绝大多数素材都是PNG格式

//加载占有内存大得方法//1.找到图片在bundle中的路径
NSString * path = [[NSBundle mainBundle]

pathForResource:@"untitled" ofType:@"jpg"];//2.保存图片数据到NSData

NSData * data = [NSData dataWithContentsOfFile:path];//3.使用此图片

    UIImage * image= [UIImage imageWithData:data];
    //[button setImage:image forState:UIControlStateNormal];
    [button setBackgroundImage:image
forState:UIControlStateNormal];

//
btn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -50);//
btn.imageEdgeInsets = UIEdgeInsetsMake(0, -50, 0, 0);

//添加到父视图
[self.view addSubview:button];

//设置button禁用button.enabled = YES;//设置button选中button.selected = NO;

UIButton的taget-action机制

//Target Action :UIControlEventTouchDown按下//TouchUpInside (范围内)手指抬起一瞬间发生//TouchUpOutside (范围外)手指抬起一瞬间发生
[button addTarget:self action:@selector(buttonPress)

forControlEvents:UIControlEventTouchDown];

#pragma mark -实现button方法-(void)buttonPress{

NSLog(@"按下了");
static int i = 0;
UILabel * label = (id)[self.view viewWithTag:30];
label.
text = [NSString stringWithFormat:@"button按下了%d",i+

+];}

[mb addTarget:self action:@selector(onClicked:)
forControlEvents:UIControlEventTouchUpInside];

// -(void)onClicked:(MyButton*) mb1{

}

=================================扩展=================================

1.UIApplication和UIApplicationDelegate的关系

1.UIApplication是程序的起始点,负责初始化和显示UIWindow2.负责加载应用程序的第一个UIView到UIWindow中3.帮助管理应用程序的生命周期4.截收到的事件,转给委托UIApplicationDelegate来处理,此委托可以

 处理的事件包括:应用程序的生命周期、事件如程序启动和关闭、系统事件如来电等。

2.NSTimer 计时器

//创建定时器
//参数1:定时器的间隔(单位是秒)
//
参数2:执行定时器的目标对象
//参数3:定时器执行的动作//参数4:是定时器的一个属性参数,一般不用,填nil即可//参数5:定时器是否重复执行,YES表示重复执行,NO表示只执行一次NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self

selector:@selector(run) userInfo:nil repeats:YES];//让定时器创建马上就停止

_timer.fireDate = [NSDate distantFuture];//启动定时器

_timer.fireDate = [NSDate distantPast];

(void)invalidate;这个是唯一一个可以将计时器从runloop中移出的方法。 


http://www.ppmy.cn/news/507075.html

相关文章

英语之境(chapter two)

-------------------------------------------------------June 21th Thursday CHAPTER TWO 第二章 THE telephone rang.电话铃响了。 Hercule Poirot did not even seem aware of the fact. 赫尔克丽波洛甚至似乎都没有意识到这一事实。 It rang with shrill and insiste…

液晶面板里面有些什么配件_液晶面板的种类有哪些

木饰面板油漆的种类有哪些 总的来说就是混油和清油&#xff0c; 清漆是仅由树脂(成膜物质)和溶剂组成的涂料(有时也根据性能要求加入少量助剂)。由于涂料和涂膜都是透明的&#xff0c;因而也称透明涂料。 混油, 主要是醇调和漆或者基调和漆&#xff0c;是一种不透明的&#xff…

第四天下午 @ Centre Point

下午坐13:05的shuttle bus去市中心吃午饭。我们在第二站Centre Point下&#xff0c;步行3至5分钟就是“双天”&#xff0c;传说中海鲜品质出色的地方。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /> 但是&#xff0c;不幸的事…

热浪岛+吉隆坡8日自由行之计划篇

目的地简介 马来西亚&#xff0c;简称大马&#xff08;Malaysia&#xff09;&#xff0c;是位于东南亚的一个国家。马来西亚由十三个州组成&#xff0c;共分为两大部分&#xff1a;一个是位于马来半岛的西马来西亚&#xff0c;北接泰国&#xff0c;南部隔着柔佛海峡&#xff0…

MY域名,什么是MY域名?

2019独角兽企业重金招聘Python工程师标准>>> .MY域名是马来西亚域名。.注册MY域名的所有人和域名管理人必须持有真实的马来西亚邮政地址。如您没有真实的马来西亚邮政地址,您可选择使用我们的代理服务。马来西亚,简称大马(Malaysia),首都吉隆坡,是位于东南亚的…

OTA市场还有机会吗?C2B精众社群是一个

OTA&#xff08;在线旅行社&#xff09;是跟互联网一样古老的词汇&#xff0c;中国OTA巨头携程1999年成立至今已16年。人们总觉得互联网与旅行结合已没有多少机会&#xff0c;但每年都有新的模式产生&#xff0c;新的明星项目出现。2015年表现得最具潜力的则是C2B社群电商与在线…

深圳-马来西亚5日行程计划

准备 钱、护照、签证、保险、机票、住宿 摄影器材、电话卡、电源转换器、全身防晒水母衣、防晒霜、轻凉夏装、泳衣裤、毛巾、牙刷、洗涤用品、拖鞋、太阳帽、防水袋、晕车晕船药、止泻药、退烧药、感冒药、创可贴、驱蚊产品、风油精等。 2016.06.17&#xff08;周四&#xf…

夏季十二星座程序猿最佳旅游地

从十二星座分布图来看&#xff0c;我们不同星座位于不同的位置&#xff08;废话&#xff09;&#xff0c;所以我们夏天旅游也要去不同的地方&#xff01;要去就要去符合我们气场的地方&#xff0c;舒服。 这有关系吗&#xff1f;&#xff1f;&#xff1f;你又在骗我&#xff01…