UI概述
UI(User Interface):用户界面,用户能够看到的各种个样页面元素。
iOS App = 各种各样的UI控件 + 业务逻辑 + 算法。
UIWindow
window是窗口,每个App 都需要借助window将内容展现给用户看。
在IOS中,使用UIWindow类来表示窗口。通常一个应用程序只创建一个UIWindow 对象。
因为window的主要作用是呈现内容给用户。因此我们不会对window做太多操作。
在创建window的时候,需要指定window的大小。
通常window的大小(frame)与屏幕(UIScreen)的大小一致。
[[UIScreen mainScreen] bounds]能够获取屏幕的大小。
UIView
view(视图):代表屏幕上的一个矩形区域。ios中用view来表示视图。
不同空间代表不同种类的view
iOS中所有能看到的内容的都是view或其子类。
创建视图的步骤:
1.开辟空间并初始化视图(初始化时,给出视图的位置和大小)
2.对视图做一些设置(比如:背景颜色)
3.将视图添加到window上进行显示
4.释放视图对象
frame
frame是view的重要属性,是我们做视图布局的关键,它决定了视图的大小和位置。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y+ frame.size.heigth/2;
center属性
描述的的是这个视图的中心点在其父视图产生的中心点的坐标值。
frame center
参考系 父视图 父视图
两者联系 frame.origin发生变化,center也发生变化;center发生变化,frame.origin也发生变化。center.x = frame.oingin.x+frame.size.width/2;center.y= frame.oringin.xframe.size.height;
添加视图:
方法名 描述 实例
insertSubview:atIndex 在指定的index处插入子视图 [subview insertSubview:grayView atIndex:]
insertSubview:aboveSubview: 在指定的视图上添加子视图 [superview insertSubview:grayView aboveSubview:redView];
insertSubview:belowSubview 在指定的视图下面添加子视图 [superview insertSubview:grayView belowSubview:redView];
管理视图层次:
方法名 描述 实例
bringSubviewToFront: 把指定的子视图移动到最前面 [superview bringSubviewToFront:redView]
sendSubviewToBack: 把指定的子视图移动到最后面 [superview sendSubview ToBack:redView];
enchangeSubviewAtIndex:withSubviewAtIndex 交换两个指定索引位置的子视图 [superview exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
removeFromSuperview 把receiver从父视图上移除 [redView removeFromSuperview];
视图的重要属性
属性名 描述 示例
hidden 控制视图的显隐 redView.hidden = YES;// 隐藏 review NO显示review
alpha 控制视图的不透明度(子视图也一起透明)取值范围为0—1 redView.alpha = 0.8;
superview 获取本视图的父视图 UIView *superView = [redView superView];
subviews 获取本视图的所有父视图 NSSArray *subviews = [redView subviews];
tag 给视图添加标记,被加完标记的视图可以使用viewWithTag:方法取出 redView.tag = 100;UIView *view = [superview viewWithTag:100];
总结:
App 靠window来呈现内容,一个程序一般只创建一个window
App只能看到的元素。都是UIView及其子类
UIView作为所有可视化控件的BaseClass 提供了许多属性和方法。显示效果控制(frame alpha等)视图添加和移除(addSubview:)等。视图层次调整(bringSubviewToFront:等)等。
阅读(2376) | 评论(0) | 转发(0) |