Everything you see on Screen is UIView.
你所看到的一切皆为UIView.
你在屏幕上所看到一切的 都是view 点击 滑动 触摸等活动也是和View所进行的
就像上图里面的时钟应用 就是由各种View不同的View堆积而成 尽管他们看起来是一个整体一样
同时UIView也是一切屏幕所显示的 SupClass 无论是自定义 还是还是系统自带的 都是继承自UIView
首先什么是UIView 嗯 大概就是 一块长方形的区域 区域的大小 颜色 位置都可以由你来指定 就像画布
UIView可以做什么呢?
1.可以呈现图像,文字,提供用户基本的信息,当然也可以呈现给用户一些非常Cooooooool的动画
2.UIView 管理布局 UIView 里面也可以添加其他的子视图(SubView),每个子视图(SubView)都能个性化的展示自己,或者可以说UIView就是一个舞台,各种View争奇斗艳。一个Parent View可以管理若干干Child View(>=0),若干个Child VIew 只能有一个共有Parent View。
3.与用户进行交互
UIView的父类 是UIResponder 该类用于处理控制事件,所以UIView也完美的继承了他父亲的遗志,与用户进行交互。对用户触碰屏幕的行为进行回应和处理。
UIView可以认为是 一张纸,你可以画出你想要的效果。理论上说你完全可以自己重写UIView里面的各种的方法来实现你想要的各种效果比如UITableView,但是
如果重写UIView整体工作量太大 不如直接继承UITableView再做部分UIView的重写 来达到自己想要的效果
首先我们需要创建一张纸(UIViewGeometry):
UIView的几何特性
先了解一下在UIKit中的坐标体系
坐标的原点在左上 和我们平时的几何坐标系并一样 但是这并不一样 这也比较容易掌握
现在我们了解UIView的几个属性 frame,bounds,center
frame,center都是对应与父视图而言的 frame 决定了UIView在其父视图位置,大小(CGRect结构体封装了 x,y,width,heigth属性)。center属性决定了当前View在父视图的中心点的位置(CGPoint 结构体封装了x,y)。frame的x,y和center的x,y并不通,frame的x,y对应的是UIView的起始左上角位置,而center的x,y则是UIView自身的中心点在父视图中的位置。
bounds 则是指定该view在本身坐标系统中 的位置和大小(CGRect类)
所以当我们创建一个UIView的时候可以这样:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 200, 300)];
指定了在x=0,y=100的地方绘制该view的左上点 width=200,height=300 宽200 高300
然后加进父View,默认颜色白色 如果 父视图也是白色的 很不幸我们看不到他 虽然他一直在那里。
所以我们需要做一些调整以使得我们能看到他(UIViewRendering)(我也不知道这改怎么说 或者说UIView要开始表演一些特技,你不能叫我加特技,我就加不然别人一眼就觉得duang,这么假)
backgroundColor(View的背景颜色),alpha(透明度0 完全透明 1不透明) 也可以用opaque 属性设置是否完全透明或者不透明,hidden设置能否看到他
所以我们加些特效上去
[self.view.backgroundColor = [UIColor whiteColor];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 200, 300)];
view.backgroundColor = [UIColor blueColor];
view.alpha = 0.5;
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 300)];
view2.backgroundColor = [UIColor redColor];
view2.alpha = 0.5;
UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 300)];
view3.backgroundColor = [UIColor yellowColor];
view3.alpha = 0.5;
[self.view addSubview:view];
[self.view addSubview:view2];
[self.view addSubview:view3];
为什么三原色调出来是这个效果
更多方法 和 属性 直接Xcode直接查询 或者看他的头文件也是可以的
接下来要讲的是人机界面,无论是什么View最后是要给人用的
既然给人用的 那么就需要注重UI Design 用户界面的设计规则
UI Design设计需要遵从以下三个方面:1.人性化 2.简明 3.美感
1.人性化 如果一个app 设计的非常反人类 比如要输入10000的值,但是 一次只能从0按加号 加一加到10000
我们需要知道的一点就是 Technology makes life better. 科技使生活更美好。如果一个UI的常用按键放在 人手不能轻易碰到的一角 那么一定是一件非常糟糕的事情
2.简明 Simple is beauty.也许你做出来的东西 非常的Cooooool 用了很多高深的技术,然后确实展现出的效果也让人 amazing 但是 用户并不能方便的操作。
3.深度 什么是深度?都简明了还有什么深度 我们举个栗子例子,多啦A梦的口袋是不是很赞,然而你可以从里面翻出来很多amzing的东西,有时候让人惊喜的方式有很多,要让用户发现原来还有这种amzing的功能啊,suprise存在深处需要慢慢发现。
我们选择Iphone 和 Mac本身选择的是一种简单的美 (Linux就算了) 因为简单容易操作同时还带有非常Coooool的界面效果
1.如何人性化
充分利用屏幕
最好主要内容放在左上部分,从人的行为习惯上来说这一部分的注意点比较多
因为很重要所以说三遍,三遍,三遍(选择重点)
并不是所有功能都要放在一起,在布局上应该上有重点 并且便于用户进行操作 视频的播放功能需要快进 后退(有时这两个都是嫌多)播发 刷新 功能 有选择性的放到工具栏,而不是一起堆在那里让用户自己慢慢的选。
2.如何简明
严格的说这也属于人性化
发短信功能 需要什么 颜色区分自己和别人的说 我在右边 你在左边 不能让用户觉得我根本看不清我说的是啥?
3.如何深度
就像你用Calendar这个自带app
not enough i want more
still more more specifier
深度的展示更多的信息 给予越来越多的功能 越来越多的惊喜 就想礼物 盒子里套盒子
that's all thx
我知道我排版非常的糟糕 简直可以说是噩梦了