doproio / practice-of-ios

practice-of-ios
24 stars 4 forks source link

【第二章学习笔记】ios窗口与视图的知识 #3

Open hkz404 opened 10 years ago

hkz404 commented 10 years ago

UIKit 框架

20130507134249884

UIWindow(窗口)

UIWindow 的主要功能:一是提供一个区域来显示视图(UIView),二是将事件(event)分发给视图。一个应用至少有一个 UIWindow,大多数 iOS 应用程序在其生命周期内只有一个 UIWindow。虽然 iOS 支持将一个 UIWindow 放在其他 UIWindow 上方,但是你的应用程序永远不应该创建多个窗口,因为这会影响事件的传递。UIWindow 本身不具有任何可见的内容,但它对于视图提供了一个容器。

UIWindow 对象有以下职责:

每个 UIWindow 对象都有 windowLevel 属性,一般不应该去改变它,但是通过对其设置,可以做到隐藏状态栏等效果。self.window.windowLevel = UIWindowLevelStatusBar

UIView(视图)

在 iPhone 上所能看到的大部分控件都是 UIView 的子类。

1. 坐标体系:

iPhone 坐标系是以左上角为原点的,每一个 view 的 frame 所使用的坐标系以它的 父视图 的左上角为原点。

与视图坐标系相关的函数:

Frame、Bounds 与 Center 属性

UIView 常用方法

addSubView:  // 添加子视图
insertSubview: atIndex  // 视图插入到指定索引位置
insertSubview:aboveSubview:  // 视图插入指定视图之上
insertSubview:belowSubview:  // 视图插入指定视图之下
bringSubviewToFront:  // 把视图移动到最顶层
sendSubviewToBack:  // 把视图移动到最底层
exchangeSubviewAtIndex:withSubviewAtIndex:  // 把两个索引对应的视图调换位置
removeFromSuperview:   // 把视图从父视图中移除

3. UIView 的基本属性和自定义

查找视图

UIView 常用属性

视图的 contentMode 决定了控件变化和缩放的方式,直接看图:

scaleaspect

它的值有:

   UIViewContentModeScaleToFill,
   UIViewContentModeScaleAspectFit,
   UIViewContentModeScaleAspectFill,
   UIViewContentModeRedraw,
   UIViewContentModeCenter,
   UIViewContentModeTop,
   UIViewContentModeBottom,
   UIViewContentModeLeft,
   UIViewContentModeRight,
   UIViewContentModeTopLeft,
   UIViewContentModeTopRight,
   UIViewContentModeBottomLeft,
   UIViewContentModeBottomRight,

对于超出的范围的内容,可以使用属性 uiview.clipsToBounds = YES 进行裁剪。

第二章作业

针对上面所说的 contentMode,实现一个界面,里面有一个图片容器、一个按钮和一行文本,按钮每次点击分别切换一种不同的 contentMode 并在文本中显示初具体的模式,目的是实现图片的填充缩放模式的切换浏览。类似下图:

image

bindy commented 10 years ago

沙发

fayching commented 10 years ago

站坑 textView.text = [textView.text stringByAppendingString: str];

ryanbay commented 10 years ago

追加 stringByAppendingString

hkz404 commented 10 years ago

第二章作业

针对上面所说的 contentMode,实现一个界面,里面有一个图片容器、一个按钮和一行文本,按钮每次点击分别切换一种不同的 contentMode 并在文本中显示初具体的模式,目的是实现图片的填充缩放模式的切换浏览。类似下图:

image

jeakey commented 10 years ago

storyboard控件与代码的连接

storyboard中控件与代码的可以可视化连接,需要按住control键拖动到需要相应的viewcontroller头文件声明处。

一般有两种连接方式可选,分别为outlet和action。设置outlet后该控件的引用会成为类的成员变量。设置为action会为该控件绑定事件,并自动生成代码。

查看storyboard代码

storyboard默认情况是可视化的方式,其实storyboard是一个xml文件,可以右键 -> open As -> Source Code来查看xml代码

Animation

ios中有与css3 Animation很类似的CAKeyframeAnimation类,该类可以实现基本所有css3可以实现的所有动画效果。

CGAffineTransform则类似css的transform,可以实现translate、scale、rotate等等的效果。