[英]How can I modify the size of SpriteKit nodes in Swift?
在我的應用程序中,對於一個屏幕,我正在設置 SpriteKit 節點的大小並將背景居中。 例如,我將背景子視圖的大小設置如下:
backgroundNode.size = self.frame.size
雖然這適用於iPhone 6 Plus ,但iPhone 5較小的屏幕/較低的分辨率意味着其他節點的默認尺寸太大而無法適應它們的場景。
如何強制其他節點符合后台節點的大小? 我想將每個子視圖的大小除以背景子視圖的大小,但是不能直接在 size 屬性上進行數學運算。
SpriteKi t場景 ( SKScene
) 包含節點、節點 ( SKNode
),它們具有size
和position
屬性(分別為CGSize
和CGPoint
類型)。
UIKit UIView
。 frame
和bounds
屬性是一個CGRect
結構,由相同的CGSize
和CGPoint
類型的結構組成。
因此,了解如何使用CGRect
、 CGSize
和CGPoint
確實很有幫助。
請注意,在 Swift 中,作為結構的CGRect
、 CGSize
和CGPoint
總是按值傳遞給函數,而不是像類那樣通過引用傳遞,因此您不能修改傳遞給函數的結構內的字段,並將它們傳播回調用者的結構副本,無需采取額外步驟。
因為 size 和 position 屬性是復合類型,所以在數學和邏輯運算中不能像標量一樣使用它們; 因為它們包含多個屬性。
例如:
CGSize
包含width
和height
屬性,CGPoint
由x
和y
屬性組成。 如果要划分大小,您必須單獨訪問CGSize
結構的寬度和高度屬性。
您可以在一個操作中分配大小(即單個構造函數):
node.size = CGSize(
width: node.size.width / backgroundNode.size.width,
height: node.size.height / backgroundNode.size.height)
或者你可以分開做:
node.size.width = node.size.width / backgroundNode.size.width
node.size.height = node.size.height / backgroundNode.size.height
在處理CGRect
字段時,有時將其作為單個實體處理很有用。 例如,
view.frame = CGRect(x: 0, y: 0, width: 10, height: 10)
其他人有時單獨設置size
和origin
屬性更實用:
view.frame.origin = CGPoint (x: 0, y: 0)
view.frame.size = CGSize (width: 10, height: 10)
甚至:
view.frame.origin.x = 0
view.frame.origin.y = 0
view.frame.size.width = 10
view.frame.size.height = 10
還值得了解每個結構的“零”靜態屬性,作為方便的簡寫等價物:
CGRect .zero ... CGRect (x: 0, y: 0, width: 0, height: 0)
CGPoint.zero ... CGPoint (x: 0, y: 0)
CGSize .zero ... CGSize (width: 0, height: 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.