Cocoa Touch:图形界面构建UIKit

Posted 好时光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocoa Touch:图形界面构建UIKit相关的知识,希望对你有一定的参考价值。

代码构建UI

1、视图树模型

计算机图形实际上是一个视图树模型,每个视图都有一个本地坐标系。
每个本地坐标系的组成部分是:原点在父坐标系中的位置,每个基在父坐标系中的位置,由此就可以根据向量的本地位置求出相对于父坐标系的位置,最终求出向量全局位置。
我们要分清全局坐标系,父坐标系,本地坐标系三种概念,分清基、向量的坐标、向量的位置三种概念。

 

2、控件监听事件

观察者模式在这里得到充分体现。

监听普通事件:

[button addTarget:self action:@selector(loadImageWithMultiThread) forControlEvents:UIControlEventTouchUpInside];

 监听手势事件:

UITapGestureRecognizer响应顺序是怎么样的
一个scrollview上有几个按钮
在scrollview上add 了一个单击事件

singletap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[singletap setNumberOfTapsRequired:1];
[scrollview addGestureRecognizer:singletap];
这样点击按钮,不会响应按钮的事件,直接跳到handleSingleTap去了?
单击事件不是应该先被直接单击的subview处理,如果没有处理才提交到supview处理嘛?
怎么才能让按钮响应单击事件?

使用
UIGestureRecognizerDelegate的一个方法判断点击的是哪个view,确定是否响应事件。
singletap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[singletap setNumberOfTapsRequired:1];
singletap.delegate = self;
[scrollview addGestureRecognizer:singletap];

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if(touch.view != scrollview){
return NO;
}else
return YES;
}

 

自定义UI

 

[[UIScreen mainScreen] bounds] 和[UIScreen mainScreen] applicationFrame]

两者之间相差20

UIScreen也是UIView,它是操作系统传播坐标系原点绝对坐标和分度值绝对长度的起点,系统给出应用的屏幕相对于硬件屏幕坐标系的原点绝对坐标,以及应用屏幕的本地坐标系分度值相对于硬件的绝对长度。

 

 

[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];

怎样让视图显示在最外层?这样就把视图显示在最外层

 尝尝使用这个方法覆盖一个HUD风格的透明图形

becomeKeyWindow 和 – resignKeyWindow ,线程调用这两个方法,控制一个window实例是否成为用于转发用户消息的那个窗口

 

 

Interface Builder

笔者倾向于使用纯代码方式来实现界面布局,这样更容易实现自定义UI控件和更容易维护修改。不过对于简单的界面,也可以使用苹果为我们提供的图形化的方式来构建。

1、如果通过加载nib文件的方式加载controller的视图,那么程线程调用 initWithNibName: 来初始化controller.view。线程会根据nib文件实例化一个NSCoder实例,然后调用initWithCoder初始化控制器所控制的视图界面。所以程序员需要实现initWithCoder方法而不是init。

- (id)initWithCoder:(NSCoder*)coder{
    if (self =[super initWithcoder:coder]) {
        //初始化控制器的变量
    }
    return self;
}

2、使用interface builder实现控件监听事件,需要配合代码中的IBOutlet和IBAction关键字,并建立Interface Builder对象和代码的关联。

 

图片资源

要建立一个像那么回事儿的界面,不能不关注图片资源,虽然这看起来像是美工的活。

1、分辨率

 

以上是关于Cocoa Touch:图形界面构建UIKit的主要内容,如果未能解决你的问题,请参考以下文章

Foundation & UIKit & Cocoa Touch

cocoa 和 cocoa touch的区别

Cocoa-touch - 用核心图形绘制到一个接触点

Cocoa touch : 多行文本输入

Cocoa touch/Xcode - 生成 NIB-less 图形上下文

构建纯 Swift Cocoa Touch 框架