5.7 针对UIView在frame/约束/旋转/缩放/圆角/各
1. 本节课将为您演示,针对视图类型的一些实用的扩展方法。首先在左侧的项目导航区,打开视图控制器的代码文件。




5. 通过设置视图对象的水平坐标、垂直坐标、宽度和高度信息,快速创建一个视图对象。


7. 将视图对象添加到根视图,并在控制台输出视图的显示区域信息。

8. 通过设置视图对象的父视图,快速创建一个和父视图相同显示区域的子视图。


10. 使用相同的方式,创建第三个视图对象,另外设置父视图的内边距为20。

11. 设置视图的背景颜色为洋红色,然后将视图添加到指定的父视图中。


13. 然后在视图加载完成的方法中,调用我们刚刚创建的自定义方法。接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

14. 当前页面上显示了一个紫色背景的视图,其内边距为20,在紫色视图中,包含一个洋红视图。橙色视图的显示区域和紫色视图相同,所以被紫色视图所遮挡。


16. 添加另一个方法,该方法用来演示,如何快速获取视图的各个属性信息。


18. 接着在控制台,依次输出视图对象的水平坐标和垂直坐标。






24. 设置视图的背景颜色为橙色,并将视图对象添加根视图中。

25. 如果需要调整视图的坐标和尺寸,我们只需重新设置视图的四个属性即可。

26. 此时视图的坐标和尺寸都被刷新,在控制台输出视图新的水平坐标的值。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


28. 接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

29. 模拟器启动之后,显示了一个橙色背景的视图对象。观察在底部的控制台,所输出的日志信息。然后点击此处的[停止]按钮,关闭模拟器。



32. 我们将在这个方法中,演示如何根据其它视图,确定另一个视图的位置和尺寸。



35. 接着初始化另一个视图对象,并设置该视图在水平方向上,位于上个视图右侧20点的位置。在垂直方向上,位于上个视图下方20点的位置。


37. 接着将两个视图,全部添加到根视图。然后点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


39. 接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

40. 模拟器启动后,显示了两个视图对象,其中橙色视图在灰色视图的右下方,与灰色视图在水平和垂直方向,各偏移20点的距离。



43. 首先初始化一个指定坐标和尺寸的视图对象,并设置视图对象的背景颜色为紫色。

44. 初始化第二个指定坐标和尺寸的视图对象,并设置视图对象的背景颜色为橙色。


46. 然后将第一个视图,在水平位置上和根视图保持居中。将第二个视图也在两个方向上和根视图保持居中。接着点击垂直滚动条,跳转到编辑区的顶部位置。


48. 接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

49. 模拟器启动后,显示了两个视图对象。紫色视图和根视图在水平方向上居中对齐。而橙色视图则在水平和垂直两个方向上,和根视图保持居中显示。






55. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


57. 接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

58. 模拟器启动后,显示了一个在水平方向上旋转四十五度的视图对象。点击此处的[停止]按钮,关闭模拟器。


60. 接着修改代码,将视图在屏幕的Z轴方向上旋转四十五度。


62. 模拟器启动后,显示了一个在Z轴方向上旋转四十五度的视图对象。点击此处的[停止]按钮,关闭模拟器。



65. 首先初始化一个指定坐标和尺寸的视图对象,该视图对象的宽度和高度都是100。


67. 设置视图对象在水平方向上放大两倍,在垂直方向上放大四倍。

68. 将缩放后的视图对象,添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


70. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

71. 模拟器启动后,显示了一个在水平方向上放大两倍,在垂直方向上放大四倍的视图对象。点击此处的[停止]按钮,关闭模拟器。







78. 然后设置视图对象的边框宽度为6,颜色为黑色,并将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


80. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

81. 模拟器启动后,显示了圆角半径为40,边框宽度为6的视图对象。点击此处的[停止]按钮,关闭模拟器。



84. 点击左上角的[编译并运行]按钮,再次启动模拟器预览项目。

85. 模拟器启动后,显示了一个底部边框宽度为20,边框颜色为红色的视图对象。点击此处的[停止]按钮,关闭模拟器。






91. 给视图对象添加一个触摸手势,并设置在一个代码块中,响应触摸的事件。


93. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


95. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

96. 模拟器启动后,在此处的橙色视图上点击,并观察控制台的日志输出。
97. 此时在控制台输出了视图点击手势的日志信息。点击此处的[停止]按钮,关闭模拟器。





102. 接着添加一个方法,演示如何给视图添加手指轻扫的手势。



105. 给视图对象添加一个轻扫手势,并设置在一个代码块中,响应触摸的事件。

106. 当视图对象被点击时,在控制台输出滑动手势的方向,以及手指的数目。

107. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


109. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

110. 模拟器启动后,在此处的橙色视图上手指轻扫,并观察控制台的日志输出。
111. 此时在控制台,输出了视图上的轻扫手势的日志信息。点击此处的[停止]按钮,关闭模拟器。

112. 然后点击右侧的垂直滚动条,跳转到编辑区的底部位置。



115. 首先初始化一个指定坐标和尺寸的视图对象,并设置视图对象的背景颜色为橙色。


117. 给视图对象添加一个拖拽手势,并设置在一个代码块中,响应触摸的事件。

118. 当手势事件处于开始状态时,获得视图此时的中心点的位置。




122. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


124. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

125. 模拟器启动后,在上方的圆点处按下手指,并向下方拖动,移动视图的位置。
126. 此时视图被移至屏幕的右下角。点击此处的[停止]按钮,关闭模拟器。

127. 然后点击右侧的垂直滚动条,跳转到编辑区的底部位置。



130. 首先初始化一个指定坐标和尺寸的视图对象,并设置视图对象的背景颜色为橙色。

131. 给视图对象添加一个捏合手势,并设置在一个代码块中,响应触摸的事件。


133. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


135. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

136. 模拟器启动后,在右上方的圆点处按下手指,并向左下方拖动,缩小视图的显示比例,并观察控制台的日志输出。
137. 视图被缩小至一个较小的尺寸,在控制台输出了,视图缩放过程中的比例日志。

138. 然后点击右侧的垂直滚动条,跳转到编辑区的底部位置。


140. 该方法将用来演示,如何给视图快速添加长按手势。首先初始化一个指定坐标和尺寸的视图对象,并设置视图对象的背景颜色为橙色。

141. 给视图添加一个长按手势,并设置在一个代码块中,响应触摸的事件。



144. 将视图对象添加到根视图。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


146. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

147. 模拟器启动后,在视图的上方长按手指,并观察视图的变化。
148. 此时视图增加了投影的效果,点击此处的[停止]按钮,关闭模拟器。

149. 然后点击右侧的垂直滚动条,跳转到编辑区的底部位置。



152. 使用扩展后的初始化语句,初始化一个按钮控件,并设置它的坐标、尺寸、目标和动作等属性。


154. 接着依次设置按钮控件,在正常状态和高亮状态时的背景颜色。



157. 添加一个方法,用来响应按钮的点击事件。接着点击右侧的垂直滚动条,跳转到编辑区的顶部位置。


159. 然后点击左上角的[编译并运行]按钮,启动模拟器预览项目。

160. 模拟器启动后,点击此处的按钮控件,并观察控制台的日志输出。
161. 此时在底部的控制台,输出了按钮事件的日志信息。本节课为您讲解了大量的扩展实例,最好多复习几遍以上的知识。最后关闭模拟器,并结束本节课程。

本文整理自:《app开发中的神兵利器》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1209739676,或扫描本页底部的二维码。课程配套素材下载地址:资料下载
