-
[iOS] Frame κ³Ό Bounds μ 곡ν΅μ κ³Ό μ°¨μ΄μ iOS/π€ App 2021. 2. 4. 10:46
곡ν΅μ
iOS μμ Frame κ³Ό Bounds λ λ·°μ μ’νμ μμΉλ₯Ό λνλ΄λ ꡬ쑰체μ λλ€.
λ°λΌμ UIView μΈμ€ν΄μ€μ΄κ±°λ UIView ν΄λμ€λ₯Ό μμν μΈμ€ν΄μ€λ .frame κ³Ό .bounds μμ±μ κ°μ§κ³ μμ΅λλ€.
μ’νλ μμΉλ₯Ό νννλ μλ¨μ΄κ³ , iOS μμλ 2μ°¨μ μ’νκ³λ₯Ό μ¬μ©ν©λλ€.
μμΉλ 곡μλ¬Έμμ `dimensions` λΌλ λ¨μ΄λ‘ ννλμ΄ μκ³ , μ¬κΈ°μλ width(λλΉ) μ height(λμ΄) κ°μ λνλ λλ€.
μ°μ Frame κ³Ό Boundsμ νμ μ λͺ¨λ CGRect μ λλ€.
κ·Έλ¦¬κ³ CGRect μ μ£Όμ μμ±μ origin κ³Ό size μ λλ€. origin μ CGPoint νμ , size λ CGSize νμ μ λλ€.
μ¦, Frame κ³Ό Bounds λ μ’νλ₯Ό orign μμ±μΌλ‘, ν¬κΈ°(νΉμ μμΉ)λ₯Ό size μμ±μΌλ‘ ννν©λλ€.
μ’νμ κΈ°μ€μ μΌμͺ½ μλ¨λΆν° (0,0) μ΄κ³ xμΆ yμΆμ μ’ννλ©΄κ³μ λμΌν©λλ€. λ¨μλ ν¬μΈνΈ μ λλ€.
μ΄λ€ μμ λΆλ CGλ Core Graphics νλ μμν¬λ₯Ό κ°λ¦¬ν€λ©°, CGκ° λΆμ νμ λ€μ κ΄λ ¨ νλ μμν¬μμ μ¬μ©λ©λλ€.
CGRectμ CGPoint, CGSizeμ ꡬμ±μ κΈ μλμμ λ€λ£¨μμ΅λλ€.
μΆκ°μ μΌλ‘ CGPoint λ CGFloat νμ μ μμ± x , y λ₯Ό κ°μ§κ³ μλλ°, CGFloat νμ μ 64λΉνΈ νκ²½μμ Double κ³Ό κ°μ΅λλ€.
μ°¨μ΄μ
Frameμ νΉμ§
var frame: CGRect { get set }
λ·°μ νΉμ§ μ€ νλλ λ€λ₯Έ λ·°λ₯Ό ν¬ν¨ν μ μλ€λ κ² μ λλ€.
μ΄λ° λ·°λ₯Ό 컨ν μ΄λ λ·°λΌκ³ λΆλ¦ λλ€.
컨ν μ΄λλ·°μμ μμκ³μΈ΅μ κΈ°μ‘΄ λ·°λ₯Ό Superview , νμ κ³μΈ΅μ ν¬ν¨λ λ·°λ₯Ό Subview λΌκ³ λΆλ¦ λλ€.
Frame μ Supreview λ₯Ό κΈ°μ€μΌλ‘ μμ μ μμΉμ ν¬κΈ°λ₯Ό ννν©λλ€.
μλ μ½λλ₯Ό 보μλ©΄, CGRect νμ μ λ³μ origin κ³Ό sizeλ‘ κ΅¬μ±λμ΄μμμ λ³Ό μ μμ΅λλ€.
originμ Superviewμμ ν΄λΉ λ·°μ μμΉ λ₯Ό λνλ΄κ³ ,
size λ width μ height λ‘ ν¬κΈ° λ₯Ό λνλ λλ€.
var frame: CGRect /* CGRect μ ꡬ쑰 */ struct CGRect { var origin: CGPoint var size: CGSize } /* CGPoint μ ꡬ쑰 */ struct CGPoint { var x: CGFloat var y: CGFloat } /* CGSize μ ꡬ쑰 */ struct CGSize { var width: CGFloat var height: CGFloat }
μ€λͺ μ μ΄ μ λμμ λ§Ίκ³ Xcodeμμ μ½μμ κ°μ μ§μ μ°μ΄μ νμΈν΄ λ³΄κ² μ΅λλ€!!π
μ μ¬μ§μμ Red View μ Green VIew μ Superview λ λͺ¨λ View λΌκ³ μ νμλ μ΅μμ λ·°(Content View)λ‘ κ°μ΅λλ€.
μ΄μ Green View λ₯Ό μ΄λμμΌ λ³΄κ² μ΅λλ€.
μλ 첫λ²μ§Έ μ¬μ§μ λ¨μν Green Viewλ₯Ό μ΄λ μν¨ κ²μ λλ€.
μλ λλ²μ§Έ μ¬μ§μ μ΄λν Green View μ Superview λ₯Ό Red View λ‘ λ³κ²½ ν κ²μ λλ€.
Superview λ³κ²½μ λ°λ₯Έ frame μμ±μ x, y κ° λ³νλ₯Ό μμΈν μ΄ν΄ λ΄ μ£ΌμΈμ!
μ μ¬μ§μμ, Green View μ frame μμ±μ x, y κ°μ΄ κ°κ° `77.0 -> 0` μΌλ‘ `265.0 -> 70.0` μΌλ‘ λ³κ²½λμμ΅λλ€.
Frame μ Superview λ₯Ό κΈ°μ€μΌλ‘ μμ μ μμΉλ₯Ό λνλ΄κΈ° λλ¬Έμ λλ€.
ν¬κΈ°λ μμΉμ μν₯μ λ°μ§ μκ³ , Green View μ ν¬κΈ° μ체λ λ³κ²½λμ§ μμμΌλ κ·Έλλ‘ μ λλ€.
μ°λ¦¬κ° μκ°ν΄λ΄μΌλ κ²μ 무μμΌκΉμ?
1. κ²λ³΄κΈ°μλ λκ°μ΄ μκ²Όμ§λ§, λ·°μ κ³μΈ΅ κ΅¬μ‘°κ° λ€λ₯Ό μ μλ€λ κ²κ³Ό
λν λ·°μ κ³μΈ΅ ꡬ쑰λ Document Outline μμ κ°λ¨νκ² νμΈν μ μμ΅λλ€
2. Frameμ μλ―Έλ₯Ό λ€μ νλ² μκΈ°νκ³ λμ΄κ°λ κ² μ λκ° λκ² μ΅λλ€.
Superview λ₯Ό κΈ°μ€μΌλ‘ x, y κ°μ μ νλ€λ κ²!
Boundsμ νΉμ§
var bounds: CGRect { get set }
Bounds λ λ·° μμ μ κΈ°μ€μΌλ‘ λ·°μ ν¬κΈ°λ§μ λνλ λλ€.
μ€μ΅μ μ¬μ©ν Red View μ Green View μ bounds κ°μ μ°μ΄ λ³΄κ² μ΅λλ€.
bounds μ originμ μμ μ κΈ°μ€μΌλ‘ νλ―λ‘ x, y κ°μ 0.0 μΌλ‘ λμ€λ κ²μ νμΈν μ μμ΅λλ€.
{ get set } μ΄λ―λ‘ κ°μ μμ νλ©΄ λ·°κ° μ΄λ»κ² λ³νλμ§ μ§μ νμΈν΄λ³΄μλ©΄ μ’κ² μ΅λλ€.
λ!
μ°Έκ³ νλ©΄ μ’μ μλ£π―
- [UIView - frame] developer.apple.com/documentation/uikit/uiview/1622621-frame
- [UIView - bounds] developer.apple.com/documentation/uikit/uiview/1622580-bounds
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π€ App' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[UIKit] λ·° νκΉ μ¬μ©ν΄λ³΄κΈ° (View Tagging) (0) 2021.03.05 [iOS] MVC λ? (feat. Cocoa MVC) (0) 2021.03.03 [iOS] About the App Launch Sequence (μ± μ€ν μμ μ μΌμ΄λλ μΌλ€) (1) 2021.02.02 [iOS] UIApplication μ΄λ? (0) 2021.01.28 [iOS] Responding to the Launch of Your App (곡μλ¬Έμ μ 리) (0) 2021.01.28