iOS 开发学习之 User Interface(4)UIView 与 UIViewController【一】

UIViewController 与 UIView

self.view -> UIView : 根视图

一个界面上的UI是添加到self.view上,是self.view的直接或间接的子视图。

回顾: window.rootViewController

——————————————————————————————

UIViewController

视图控制器

作用:提供了基本的属性或方法用来管理应用程序的视图。

一个视图控制器管理一组构成一个用户界面的视图。包括加载,排列视图,与视图的交互,协调与数据的响应。除此之外,还处理与其他视图控制器的交互。

一般情况下,不会直接创建UIViewController的实例,而是实例话它的子类。

——————————————————————————————

创建UIView

初始化:

initWithFrame:

基本属性:

.backgroundColor

.hidden                       // 是否隐藏

.alpha                         // 透明度 0~1

.layer

.clipsToBounds

——————————————————————————————

.frame                        // 当前视图相对于(直接)父视图的位置和大小

.bounds                      // 当前视图相对于自己的位置和大小

.center                       // 当前视图的中心点相对于父视图的位置

.transform                  // 形变属性,改变视图的平移,缩放比例,旋转角度等

——————————————————————————————

.tag                           // 视图的标识

.userInteractionEnable  // 是否允许视图接收用户交互,默认为YES

方法:

视图间的层次,通过addSubview:使一个视图成为另一视图的子视图。一个视图只能有一个父视图,也就是说:当一个视图经过[aView addSubview:],[bView addSubview:]后,它的父视图是bView。

viewWithTag:                                                // 通过视图标识获取视图对象

addSubview:                                                 // 添加子视图

removeFromSuperview                                   // 子视图从父视图脱离

bringSubviewToFront:                                    //  将某一子视图移动到其父视图最上层

insertSubview:atIndex:                                   //  将某一子视图插入到指定层级索引

insertSubview:aboveSubview:                         //  将某一子视图插入到某一子视图之上

insertSubview:belowSubview:                         //  将某一子视图插入到某一子视图之下

exchangeSubviewAtIndex:withSubviewAtIndex:  //  交换两个子视图的层级索引

——————————————————————————————

父子视图间的自适应

父视图缩放时,子视图的位置,大小也随之变化。

父视图.autoresizesSubviews        //  设置子视图们是否可适应父视图的变化

子视图.autoresizingMask             //  设置子视图适应父视图的模式

——————————————————————————————

UIView的图层:CALayer

任何一个视图都是由一个主图层+多个子图层构成。

UIView 对象.layer : 是主图层

UIView 绘图部分是由CALayer进行,UIView是CALayer的管理器

——————————————————————————————

动画

在iOS中动画,分属在两个框架下:UIKit 和 Quartz Core, 分别是在UIView 和 CALayer 上进行操作。前者是后者的封装。

[工程]:UIViewAnimation

a. UIView 级别的动画(封装度高,代码简单,灵活度低)

设置视图属性在一段时间内的变化值,一般只需要设置开始,结束值即可。

方法一及步骤:

+ beginAnimations:context:                        // 开始一个动画块

+ setAnimationDuration:                             // 设置动画持续时间

+ setAnimationDelay:                                 // 设置动画延时

+ setAnimationRepeatCount:                      // 设置动画重复次数

+ setAnimationCurve:                               //  设置动画曲线样式

+ setAnimationTransition:forView:cache:     //  在动画块期间为视图设置过渡

//…这里设置要变化的视图属性,如frame

+ commitAnimations                               // 提交一个动画块

——————————————————————————————

方法二:(使用block对象)

+ animateWithDuration:delay:options:animations:completion: // 使用指定的持续时间,延时,选项,提交动画块,动画完成块 实现动画;transform

[工程]: CALayerAnimation

b. CALayer级别的动画 (直接操作图层,代码稍复杂,灵活度高)

由 Core Animation (核心动画,简称 CA) 实现,直接作用于CALayer, 对于 UIView级别的动画,底层实际上也是由CA实现。

CA下的动画类:CAAnimation 是所有动画类的父类,不能直接使用,使用其子类。

可以使用的子类有:CABasicAnimation, CAKeyframeAnimation , CAAnimationGroup, CATransition.

>> CATransition 创建动画

方法及步骤:

[CATransition animation]           // 创建动画对象

setDuration:                             // 动画持续时间

setType:                                  // 动画类型

setSubtype:                              // 动画方向

.layer addAnimation:forKey:        // 将动画对象添加到图层CALayer上

——————————————————————————————

时间: 2024-10-02 19:28:37

iOS 开发学习之 User Interface(4)UIView 与 UIViewController【一】的相关文章

iOS 开发学习之 User Interface(4)UIView 与 UIViewController【二】

UIViewController 生命周期 从视图控制器创建,在屏幕上显示视图,再到被销毁的过程.一个生命周期内viewDidLoad只被调用一次.见图一 // 视图控制器在经过alloc 之后,开始生成UIView - (void)loadView { [super loadView]; // 加载视图 // 如果有 storyboard 活着 xib, 那么视图控制器就直接获取它里面的UIView // 若无则需通过 [[UIView alloc] init]; 来生成一个view // 一

iOS 开发学习之 User Interface(1)APP 生命周期

一,APP 生命周期 OC的学习在Fundation框架下,UI阶段的学习在触摸层(Cocoa Touch Layer)下的UIKit框架下(Cocoa:是OS X 和iOS 操作系统的程序运行环境). 应用程序入口 *** main函数: int UIApplicationMain(int argc,char *argv[], NSString *principalClassName,NSString *delegateClassName); // argc, argv 由main函数传递给U

iOS 开发学习之 User Interface(3)iOS 坐标系和 UILabel 与 UIButton

注意:控制器的视图默认是透明的,需要给其设置背景. a. 创建UILabel对象,使用带frame参数的初始化方法. 此参数是结构体类型,包含了该UI对象显示在视图上的位置,尺寸. iOS 坐标系: 屏幕左上角为(0,0)起始点, 终点:(各代设备尺寸不同而变化) 3GS及之前:(320,480) — 像素 — (320,480) 4,4s:           (320,  480) — 像素 — (640,960) 5,5s:(320,568) 6,6s:(375,667)(plus:414

iOS 开发学习之 User Interface(2)UIWindow 视窗

UIWindow 视窗 a. 所有的UI直接或间接的放在UIWindow之上. b. UIWindow 继承自UIView. c. 视窗的创建:初始化视窗对象,指定其尺寸,以主屏幕([UIScreen mainScreen])范围指定. d. 将视窗设置为主窗口并使其可见 [window makeKeyAndVisible]; 一个应用程序只有一个主窗口. /* AppDelegate.m - (BOOL)application:(UIApplication *)application didF

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

ios开发学习资料总汇

ios开发学习资料总汇 下面是收集的一些学习资料. 1.唐巧精心整理了国内40多位iOS开发博主的博客地址列表 2.ios常见加密: 链接: http://pan.baidu.com/s/1eQTGFIE 密码: p8ay 3.