iOS10 UI教程檢視的邊界與檢視的框架
iOS10 UI教程檢視的邊界與檢視的框架
iOS10 UI檢視的邊界
在檢視的幾何形狀中我們提到了檢視屬性中的一部分屬性可以將定義的檢視繪製在螢幕上。其中典型的3個屬性為邊界屬性、框架屬性以及中心位置屬性。
bounds表示的就是邊界屬性,它是一個CGRect屬性。它定義了該檢視本身內部的座標系統中的位置(origin)和大小(size)。在大多數情況下bounds中的origin屬性為(x: 0, y: 0),size屬性為檢視的大小。在使用bounds時,我們不可以確定檢視是如何繪製在UI層次結構中的。
iOS10 UI檢視的框架
frame表示的就是框架屬性,定義了檢視圖如何放置層次結構中。frame是一個CGRect屬性,它型別與bounds屬性,但是frame的origin屬性決定了檢視如何放置它的父檢視中。
注意:bounds屬性和frame屬性類似,但有所不同,bounds指的是該檢視本身內部的座標系統中的位置和大小。參照點是本身的座標系統,即為絕對座標,而frame指的是該檢視在設計介面座標系統中的位置和大小。參照點是設計介面,即為相對座標。
【示例1-4:Frame】以下我們將使用程式碼說明frame和bounds的不同。具體的操作步驟如下:
(1)開啟ViewController.swift檔案,編寫程式碼,實現在螢幕上顯示一個紅色的空白檢視,並且分別輸出bounds和frame的位置和大小。程式碼如下:
點選(此處)摺疊或開啟
-
import UIKit
-
class ViewController: UIViewController {
-
override func viewDidLoad() {
-
super.viewDidLoad()
-
// Do any additional setup after loading the view, typically from a nib.
-
let point=CGPoint(x: 67.0, y: 217.0)
-
let size=CGSize(width: 240.0, height: 128.0)
-
let rect=CGRect(origin: point, size: size)
-
let newView=UIView(frame: rect)
-
self.view.addSubview(newView)
-
newView.backgroundColor=UIColor.red
-
//輸出bounds的位置
-
print("bounds.origin.x:\(newView.bounds.origin.x)")
-
print("bounds.origin.y:\(newView.bounds.origin.y)")
-
//輸出bounds的大小
-
print("bounds.size.width:\(newView.bounds.size.width)")
-
print("bounds.size.height:\(newView.bounds.size.height)")
-
//輸出frame的位置和大小
-
print("frame.origin.x:\(newView.frame.origin.x)")
-
print("frame.origin.y:\(newView.frame.origin.y)")
-
print("frame.size.width:\(newView.frame.size.width)")
-
print("frame.size.height:\(newView.frame.size.height)")
-
}
-
……
- }
此時執行程式,會看到如圖1.9所示的效果
圖1.9 執行效果 圖1.10 執行效果
此時會在應用程式輸出視窗輸出如下內容:
點選(此處)摺疊或開啟
-
//bounds的位置和大小
-
bounds.origin.x:0.0
-
bounds.origin.y:0.0
-
bounds.size.width:240.0
-
bounds.size.height:128.0
-
//frame的位置和大小
-
frame.origin.x:67.0
-
frame.origin.y:217.0
-
frame.size.width:240.0
- frame.size.height:128.0
注意:在以上這些情況中,frame和bounds的size是相同的,但是origin是不同的。
(2)修改vViewController.swift檔案中的viewDidLoad()方法中的程式碼,實現空白檢視的旋轉,旋轉後再分別輸出bounds和frame的位置和大小。程式碼如下:
點選(此處)摺疊或開啟
-
override func viewDidLoad() {
-
super.viewDidLoad()
-
// Do any additional setup after loading the view, typically from a nib.
-
let point=CGPoint(x: 67.0, y: 217.0)
-
let size=CGSize(width: 240.0, height: 128.0)
-
let rect=CGRect(origin: point, size: size)
-
let newView=UIView(frame: rect)
-
self.view.addSubview(newView)
-
newView.backgroundColor=UIColor.red
-
newView.transform=CGAffineTransform(rotationAngle: 45) //旋轉
-
print("bounds.origin.x:\(newView.bounds.origin.x)")
-
……
- }
此時執行程式,會看到如圖1.10所示的效果。在應用程式輸出視窗輸出以下內容:
點選(此處)摺疊或開啟
-
//bounds的位置和大小
-
bounds.origin.x:0.0
-
bounds.origin.y:0.0
-
bounds.size.width:240.0
-
bounds.size.height:128.0
-
//frame的位置和大小
-
frame.origin.x:69.5035357716888
-
frame.origin.y:145.270969771571
-
frame.size.width:234.992928456622
- frame.size.height:271.458060456858
注意:在旋轉檢視後,bounds的位置和大小和在沒有旋轉檢視之前是一樣的。frame發生了變化,為了容納旋轉後的檢視,尺寸會自動進行調整。
iOS10 UI教程檢視的邊界與檢視的框架
相關閱讀:iOS10 UI教程檢視的幾何形狀
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2128931/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS10 UI教程檢視的繪製與檢視控制器和檢視iOSUI
- iOS10 UI教程檢視和子檢視的可見性iOSUI
- iOS10 UI教程檢視的中心位置iOSUI
- iOS10 UI教程基改變檢視的外觀與檢視的可見性iOSUI
- iOS10 UI教程檢視除錯iOSUI除錯
- iOS10 UI教程檢視的生命週期iOSUI
- iOS10 UI教程檢視的幾何形狀iOSUI
- iOS10 UI教程禁用檢視與使用者的互動iOSUI
- iOS10 UI教程子檢視和父檢視UI層次結構和Views繼承iOSUIView繼承
- iOS10 UI教程基礎視窗的內容與設定起始視窗iOSUI
- 11 UML中的邏輯檢視、程序檢視、實現檢視、部署檢視
- iOS探索:UI檢視之事件傳遞&檢視響應iOSUI事件
- 教程-檢視的概念和基本用法
- ThinkPHP框架檢視詳細介紹View檢視–模板(九)PHP框架View
- Django教程(一) Django檢視與網址Django
- docker 容器的使用與檢視Docker
- Flutter檢視的Layout與PaintFlutterAI
- ASP.NET Core 5.0 MVC中的檢視分類——佈局檢視、啟動檢視、具體檢視、分部檢視ASP.NETMVC
- 檢視與檢視控制器生命週期
- 普通檢視和物化檢視的區別
- [Django框架之檢視層]Django框架
- Django框架之檢視層Django框架
- MySQL資料庫檢視:檢視定義、建立檢視、修改檢視MySql資料庫
- Servlet 教程——檢視閱讀Servlet
- JDBC教程——檢視閱讀JDBC
- 深入學習UI5框架程式碼系列之八:談談UI5 的檢視控制元件 ID,以及其和 Angular 檢視的異同UI框架控制元件Angular
- 物化檢視的快速重新整理測試與物化檢視日誌
- Oracle普通檢視和物化檢視的區別Oracle
- sql server 檢視tempdb使用的相關檢視SQLServer
- Xamarin XAML語言教程ContentView檢視作為自定義檢視的父類View
- Django:路由與檢視Django路由
- ●linux程式的檢視與操作●Linux
- [Django REST framework - 檢視元件之檢視基類、檢視擴充套件類、檢視子類、檢視集]DjangoRESTFramework元件套件
- 如何檢視JDK以及JAVA框架的原始碼JDKJava框架原始碼
- CodeIgniter框架之檢視框架
- 【檢視】SMON_SCN_TIME檢視--SCN與時間的對應關係
- django 的類檢視和函式檢視-雜談Django函式
- odoo檢視入門學習- tree檢視的使用Odoo