`
ydbc
  • 浏览: 718566 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

UIScreen UIWindow UIView

 
阅读更多
UIScreen(屏幕),UIWindow(窗口),UIView(视图)是IOS的几个基本界面元素。其中UIWindow(窗口)和UIView(视图)是为iPhone应用程序构造用户界面的可视组件。UIWindow为内容显示提供背景平台,UIView负责绝大部分的内容描画,并负责响应用户的交互。

1.UIScreen

UIScreen类代表了屏幕,根据特酷吧的理解,UIScreen一般也只是用来获取屏幕大小。如下例所示:
CGrect screenBounds = [[UIScreen mainScreen] bounds];//返回的是带有状态栏的Rect (0.0,0.0,320.0,480.0)
CGRect viewBounds = [[UIScreen mainScreen] applicationFrame];//不包含状态栏的Rect(0.0,20.0,320.0,480.0)[iphone状态栏高度20像素]

2.UIWindow

iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例。应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来。之后我们很少需要再次引用它。UIWindow对象是所有UIView的根,管理和协调的应用程序的显示。一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件。
在 IOS中,UIWindow对象并没有像windows应用程序中常见的关闭框或标题栏这样的部件,普通用户不能直接对其进行关闭或其它操作。所有对窗口 的操作都需要通过其编程接口来实现。应用程序可以借助窗口对象来进行事件传递。窗口对象会持续跟踪当前的第一响应者对象,并在UIApplication 对象提出请求时将事件传递它。
在Mac OS X中,NSWindow的父类是NSResponder;而在iPhone OS中,UIWindow的父类是UIView。因此,UIWindow窗口在IOS中也是一个视图对象。
在 创建应用程序窗口时,应该总是将其初始的边框尺寸设置为整个屏幕的大小。如果您的窗口是从nib文件装载得到,Interface Builder并不允许创建比屏幕尺寸小的窗口;然而,如果您的窗口是通过编程方式创建的,则必须在创建时传入期望的边框矩形。除了屏幕矩形之外,没有理 由传入其它边框矩形。屏幕矩形可以通过UIScreen对象来取得,具体代码如下所示:
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.rootViewController = viewController;
//UIWindow有一个根视图控制器—这个视图控制器负责配置当窗体显示时最先显示的视图。
[self.window makeKeyAndVisible];//这行代码会让包含了视图控制器视图的Window窗口显示在屏幕上。

3.视图UIView

视图是UIView类的实例,负责在屏幕上定义一个矩形区域。视图在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象都要负责渲染视图矩形区域中的内容,并响应该区域中发生的操作事件。视图是应用程序与用户交互的重要机制。
除 了显示内容和处理事件之外,视图还可以用于管理一或多个子视图。子视图是指嵌入到另一视图对象边框内部的视图对象,而被嵌入的视图则被称为父视图或超视 图。视图的这种布局方式被称为视图层次,一个视图可以包含任意数量的子视图,通过为子视图添加子视图的方式,视图可以实现任意深度的嵌套。子视图总是被显 示在其父视图的上方。每个父视图都负责管理其直接的子视图,根据需要调整它们的位置和尺寸,以及响应它们没有处理的事件。
在IOS中视图和视图控制器紧密协作,视图控制器的作用是处理视图的装载与卸载、处理由于设备旋转导致的界面旋转,以及和用于构建复杂用户界面的高级导航对象进行交互.


分享到:
评论

相关推荐

    iOS 开发中总结的各种工具类。

    iOS 工具类,NSString,UIImage等。###目前包括以下几类 * UIImage * UIScreen * UIView * NSString

    ios8中的UIScreen

    NULL 博文链接:https://justsee.iteye.com/blog/2154757

    UIViewExt:UIView扩展

    ##UIView扩展 ####直接获取view的方位属性 view.height view.width ####针对不同设备的坐标转换 define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width define SCREENPOINTRESIZE(float) ((float)/320.0...

    UIScreen学习记录

    NULL 博文链接:https://stephen830.iteye.com/blog/2253381

    ios - A-常用宏定义

    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) //-------------------获取设备大小----判断5--------------------- #define...

    ios-新特性引导页.zip

    window = UIWindow(frame: UIScreen.main.bounds) if !UserDefaults.standard.bool(forKey: "alreadyUsedApp"){ // 未使用过App,首次使用 let images:[UIImage] = [UIImage(named:"1")!,UIImage(named:...

    ios开发记录

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; Screen 屏 //让window显示到屏幕上 [self.window makeKeyAndVisible]; Visible可见的 //得到全局的屏幕对象 UIScreen *...

    屏幕截图功能

    - (UIImage *)getNormalImage:(UIView *)view{ float width = [UIScreen mainScreen].bounds.size.width; float height = [UIScreen mainScreen].bounds.size.height; UIGraphicsBeginImageContext...

    iOS-Extensions:让生活更轻松的 iOS 扩展

    类别UIDevice+isIPAD{.h,.m} UILabel+Font{.h,.m} UIScreen+Frame{.h,.m} UIView+Frame{.h,.m} UIView+Xib{.h,.m} UIViewController+Xib{.h,.m} NSManagedObject+Map{.h,.m} NSManagedObject+Extension{.h,.m} ...

    ios-酷炫重力感应imageView.zip

    YGGravityImageView *imageView = [[YGGravityImageView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; imageView.image = ...

    指尖:适用于iOS应用程序的外部显示器上的触摸指示器

    指尖 iOS应用的演示模式 指尖是一个小型图书馆(一类),用于iOS设备上的演示文稿,其中显示了所有触摸和手势,以使... _window = [[MBFingerTipWindow alloc ] initWithFrame: [UIScreen mainScreen ].bounds]; } r

    GskSliderView:一个侧滑的类,仿QQ侧滑,模糊化处理

    (NSDictionary *)launchOptions { self.window =[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor =[UIColor whiteColor]; ViewController *vc = [[ViewController ...

    motion-tab:MotionTab 是一个 RubyMotion gem,用于使 UITabBars 更容易实现

    在 app/app_delegate.rb 中: def application ( application , didFinishLaunchingWithOptions : launchOptions ) @window = UIWindow . alloc . initWithFrame ( UIScreen . mainScreen . bounds ) tabs = [ {

    键盘弹出时会覆盖文本框怎么解决

    #import UIView+FrameExtension.h // 可以自己写,以后用着方便 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height @interface ViewController () @end @implementation ViewContr

    XXYZoomTableViewHeader:带视差的tableHeaderView,使用方便,支持集成下拉刷新控件

    var customView = UIView(frame: CGRectMake(UIScreen.mainScreen().bounds.size.width/2 - 50, 100, 100, 100)) tableView.zoomHeaderView = XXYTableHeaderView(tableview: tableView, height: 300, image: ...

    IOS入门之HelloWorld源代码

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; UILabel *label...

    CPMotionRecognizer:向 UIResponder 添加“动作识别器”(用于检测抖动)

    用法设置一次… 在您的应用程序委托中,实例化运动检测 UIWindow 子类: self.window = [[CPMotionRecognizingWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];...然后像这样使用无论你想要处理抖动的...

    iOS实现抽屉效果

    #define screenW [UIScreen mainScreen].bounds.size.width @interface DragerViewController () @property (nonatomic, weak) UIView *leftV; @property (nonatomic, weak) UIView *rightV; @property (nonatomic, ...

    贝岭的matlab的代码-TDBWalkthrough:TDB演练

    贝岭的matlab的代码TDB演练 TDBWalkthrough 是一个 pod,允许您在应用程序启动时添加演练。 要求 仅 ARC iOS 7.0+ ...[[UIWindow alloc ] initWithFrame: [[UIScreen mainScreen ] bounds ]]; // O

    贝岭的matlab的代码-TDBSplashscreen:CocoapodTDBSplashscreen

    贝岭的matlab的代码TDB闪屏 TDBSplashscreen 是一个 Pod,它允许您在将新数据加载到应用程序时显示更长时间的启动画面 要求 仅 ARC ...[[UIWindow alloc ] initWithFrame: [[UIScreen mainScreen ]

Global site tag (gtag.js) - Google Analytics