Note of IOS 7 - Views

简介: 1. Views   presentation: A view (an object whose class is UIView or a subclass of UIView) knows how to draw itself into a rectangular area of the interface.

1. Views

 

presentation:

A view (an object whose class is UIView or a subclass of UIView) knows how to draw itself into a rectangular area of the interface.

eg: you can drag an interface widget, such as a UIButton, into a view in the nib editor; when the app runs, the button appears, and works properly.

 

interact:

A view is also a responder (UIView is a subclass of UIResponder).
This means that a view is subject to user interactions, such as taps(轻敲) and swipes(猛击).
Thus, views are the basis not only of the interface that the user sees,
but also of the interface that the user touches.

 

A view may come from a nib, or you can create it in code. On balance, neither approach
is to be preferred over the other; it depends on your needs and inclinations(倾向) and on the
overall architecture of your app.

 

2. The Window

 

The top of the view hierarchy is the app’s window.

It is an instance of UIWindow, which is a UIView subclass. Your app should have exactly one main window.

It is created at launch time and is never destroyed or replaced.

It occupies the entire screen and forms the background to, and is the ultimate superview of, all your other visible views.

The window must fill the device’s screen.

Therefore, its size and position must be identical to the size and position of the screen.

This is done by setting the window’s frame to the screen’s bounds as the window is instantiated.

eg:

UIWindow* w = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

 

The window must persist for the lifetime of the app. To make this happen, the app
delegate class has been given a window property with a strong retain policy.

App without a main storyboard

If your app has no main storyboard, then creation and configuration of the window
must be done in some other way. Typically, it is done in code.

in application:didFinishLaunchingWithOptions:, like this:

self.window =
[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

 

You can drag a view from the Object library into the main view as a subview,
and it will be instantiated in the interface when the app runs.

Alternatively, you can create views and add them to the interface in code;

the simplest place to do this, for now, is the view controller’s viewDidLoad method, which has a reference to the view controller’s
main view as self.view.

eg:

- (void)viewDidLoad {
  [super viewDidLoad];
  UIView* mainview = self.view;
  UIView* v = [[UIView alloc] initWithFrame:CGRectMake(100,100,50,50)];
  v.backgroundColor = [UIColor redColor]; // small red square
  [mainview addSubview: v]; // add it to main view
}

 

Alternatively, you can start your project with the Empty Application template. It has
no .xib or .storyboard file, so your views will have to be created entirely in code. The
Empty Application template does not supply any view controllers, and does not assign
any view controller to the window’s rootViewController property.

 

A simple solution is to put your code in the app delegate’s application:didFinishLaunchingWithOptions:,

creating a minimal root view controller and accessing its main view through its view property.

eg: 

- (BOOL)application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  // (template code:)
  self.window =
    [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 
  // Override point for customization after application launch.
  // (your code:)
  self.window.rootViewController = [UIViewController new];
  UIView* mainview = self.window.rootViewController.view;
  UIView* v = [[UIView alloc] initWithFrame:CGRectMake(100,100,50,50)];
  v.backgroundColor = [UIColor redColor]; // small red square
  [mainview addSubview: v]; // add it to the main view
  
  // (template code:)
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  
  return YES;
}

 

The method addSubview: makes one view a subview of another;

removeFromSuperview takes a subview out of its superview’s view hierarchy.

 

Oddly, there is no command for removing all of a view’s subviews at once.

However, a view’s subviews array is an immutable copy of the internal list of subviews, so it is legal
to cycle through it and remove each subview one at a time:

for (UIView* v in view.subviews)
  [v removeFromSuperview];

 

 Here’s an alternative way to do that:

[view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

 

3. Frame

A view’s frame property, a CGRect, is the position of its rectangle within its superview,
in the superview’s coordinate system.

 

UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(113, 111, 132,   194)];
v1.backgroundColor = [UIColor colorWithRed:1 green:.4 blue:1 alpha:1];

UIView* v2 = [[UIView alloc] initWithFrame:CGRectMake(41, 56, 132, 194)];
v2.backgroundColor = [UIColor colorWithRed:.5 green:1 blue:0 alpha:1];

UIView* v3 = [[UIView alloc] initWithFrame:CGRectMake(43, 197, 160, 230)];
v3.backgroundColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];

[mainview addSubview: v1];
[v1 addSubview: v2];
[mainview addSubview: v3];


运行如下:

 

 

 

 

 

 

 

 

目录
相关文章
|
iOS开发 Windows
iOS Programming - Views(视图 - 基本绘制,变换,平移,旋转,反转,倾斜)
1. Views A view (an object whose class is UIView or a subclass of UIView) knows how to draw itself into a rectangular area of the interface.
1098 0
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
11月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
638 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
10月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
398 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
12月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
330 66
|
10月前
|
人工智能 程序员 API
iOS|记一名 iOS 开发新手的前两次 App 审核经历
啥,这玩意也有新手保护期?
274 0
|
12月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
1129 11
|
12月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
352 3
|
12月前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。

热门文章

最新文章