[iOS] frame๊ณผ bounds

2021. 8. 20. 20:52ยท๐ŸŽ iOS & Swift
๋ชฉ์ฐจ
  1. frame vs bounds
  2. Origin (x, y) : ์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•œ ์ฐจ์ด
  3. Size (width, height) : ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ฐจ์ด
  4. Move : ์›€์ง์ž„์— ๋Œ€ํ•œ ์ฐจ์ด
  5. Sample
  6. ๋ ˆํผ๋Ÿฐ์Šค

frame๊ณผ bounds

 

์•ˆ๋…•ํ•˜์„ธ์š”, ํƒœ๋ผ์ž…๋‹ˆ๋‹ค :)

์š”์ฆ˜์—๋Š” ํ•œ ๋‹จ๊ณ„ ๋” ์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์‹œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถ€ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ์ด์ „์— ์•„๋ฌด ์ƒ๊ฐ์—†์ด ์ž‘์„ฑํ•˜๋˜ ์ฝ”๋“œ๋‚˜ ๊ฐœ๋…๋“ค์ด ๋ˆˆ์— ํ™• ๋„๋”๋ผ๊ตฌ์š”...

 

์•Œ๊ณ  ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ๋ž‘ ๋ชจ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ๋ž‘์€ ์—ญ์‹œ ์—„์ฒญ๋‚œ ์ฐจ์ด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํƒ„ํƒ„ํžˆ ํ•ฉ์‹œ๋‹ค...
(๊ทผ๋ฐ ๊ธฐ์ดˆ๋งŒ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ํฅ๋ฏธ๊ฐ€ ๋–จ์–ด์ง€๋Š”๊ฑด ์‚ฌ์‹ค... ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ ์ ˆํžˆ ์š”๋ฆฌ์กฐ๋ฆฌ ์•„์‹œ์ฃ ...? ๐Ÿ˜‹)

 

frame vs bounds

์˜ค๋Š˜์€ frame๊ณผ bounds์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ๊ฑฐ์˜ˆ์š”.
์•„ ๊ทผ๋ฐ, ์š”์•ฝ๋ฒ„์ „์ด๋‹ˆ๊นŒ ์ž์„ธํ•˜์ง€ ์•Š์•„๋„ ์ดํ•ดํ•ด์ฃผ์„ธ์š”...
๊ผผ๊ผผํ•œ ์„ค๋ช…๋ฒ„์ „์€ ๋‚˜์ค‘์—...

 

์šฐ์„  ๋‹ค ์ดํ•ดํ•˜๊ณ  ๋‚˜์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ฉด frame๊ณผ bounds์˜ ์ฐจ์ด๋Š” ๋‹ค์Œ 3๊ฐ€์ง€๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•œ ์ฐจ์ด, ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ฐจ์ด, ์‹ค์ œ๋กœ ์›€์ง์˜€์„ ๋•Œ ์›€์ง์ž„์˜ ์ฐจ์ด

 

์ œ๊ฐ€ ์ดํ•ดํ–ˆ์„ ๋•Œ๋Š” ์ด 3๊ฐ€์ง€๊ฐ€ ์ „๋ถ€์ด๋‹ค.
ํŠนํžˆ ๋งˆ์ง€๋ง‰ ๋‚ด์šฉ์ด ์ฒ˜์Œ์—๋Š” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด๋ฐ ์ด๋Š” ์ง์ ‘ ๊ทธ๋ ค๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด๊ณ , ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋ณด๋ฉด์„œ ์ดํ•ดํ•ด์•ผํ•ด์š”!

 

Origin (x, y) : ์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•œ ์ฐจ์ด

frame์—์„œ origin์€ Superview์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ ,
bounds์—์„œ origin์€ ์ž์‹ ์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Size (width, height) : ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ฐจ์ด

frame์—์„œ size๋Š” view๋ฅผ ๊ฐ์‹ธ๋Š” ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. โ‡’ ํšŒ์ „์‹œ์—๋Š” size๊ฐ€ ์ปค์ง€๊ฒŒ ๋จ
bounds์—์„œ size๋Š” view ์ž์ฒด์˜ ๋ณธ๋ž˜ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Move : ์›€์ง์ž„์— ๋Œ€ํ•œ ์ฐจ์ด

frame์€ ์ž๊ธฐ ์ž์‹ ์˜ view๋ฅผ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
bounds๋Š” subviews๋ฅผ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ(+, -)์œผ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.

 

 

Sample

๊ณต๋ถ€ ์ข€ ํ•ด๋ณด์‹œ๊ณ , ํ…Œ์ŠคํŠธ ํ•œ ๋ฒˆ ํ•ด๋ณด์„ธ์š”.

bounds๋ฅผ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ์˜ˆ์ œ 1

 

 

Mission1) ์•„๋ž˜์—์„œ ์ฃผ์„์ฒ˜๋ฆฌ ํ•œ ๋ถ€๋ถ„์„ ์ฑ„์›Œ์„œ ์ฃผํ™ฉ์ƒ‰ ๋ฐ•์Šค๋ฅผ ํšŒ์ƒ‰ ๋ฐ•์Šค ์šฐ์ธก ํ•˜๋‹จ์œผ๋กœ ๋ณด๋‚ด๋ณด์„ธ์š”!

import UIKit

class ViewController: UIViewController {
    
    let grayView = UIView()
    let orangeView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        setup()
    }

    private func setup() {
        grayView.backgroundColor = .gray
        grayView.frame = CGRect(x: 50, y: 50, width: 200, height: 200)
        view.addSubview(grayView)
        
        orangeView.backgroundColor = .orange
        orangeView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
        grayView.addSubview(orangeView)
        
        UIView.animate(withDuration: 2) {
            // code
            // ์ฃผํ™ฉ์ƒ‰ ๋ฐ•์Šค๋ฅผ ํšŒ์ƒ‰ ๋ฐ•์Šค์˜ ์šฐ์ธกํ•˜๋‹จ์œผ๋กœ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
        }
    }
}

 

์•„๋ž˜์—์„œ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”~

๋”๋ณด๊ธฐ
import UIKit

class ViewController: UIViewController {
    
    let grayView = UIView()
    let orangeView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        setup()
    }

    private func setup() {
        grayView.backgroundColor = .gray
        grayView.frame = CGRect(x: 50, y: 50, width: 200, height: 200)
        view.addSubview(grayView)
        
        orangeView.backgroundColor = .orange
        orangeView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
        grayView.addSubview(orangeView)
        
        UIView.animate(withDuration: 2) {
            // ์ฃผํ™ฉ์ƒ‰ ๋ฐ•์Šค๋ฅผ ํšŒ์ƒ‰ ๋ฐ•์Šค์˜ ์šฐ์ธกํ•˜๋‹จ์œผ๋กœ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
            self.grayView.bounds.origin.x = -100
            self.grayView.bounds.origin.y = -100
        }
    }
}
bounds๋ฅผ ๊ฑด๋“œ๋ ค์ฃผ๋ฉด ์›ํ•˜๋Š”๋Œ€๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋งˆ๋ฌด๋ฆฌ

์•„๋ž˜ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ ์ฐธ๊ณ ํ•œ ๋ ˆํผ๋Ÿฐ์Šค ์ฒจ๋ถ€ํ• ๊ฒŒ์š”!
๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ์—์„œ ๋„ˆ๋ฌด ์ž˜ ์„ค๋ช…ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

๋ ˆํผ๋Ÿฐ์Šค

  • Apple Developer Documentation
  • Apple Developer Documentation
  • iOS) Frame vs Bounds ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ (1/3)
  • [iOS - swift] 14. frame๊ณผ bounds

'๐ŸŽ iOS & Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[iOS] ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” HTMLํƒœ๊ทธ ์ œ๊ฑฐํ•˜๊ธฐ  (0) 2021.08.28
[iOS] Convenience init(ํŽธ์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €)  (2) 2021.08.22
[iOS] ์˜ต์…”๋„, Optional  (0) 2021.08.18
iOS Issue(1) - Build input file cannot be found  (0) 2021.07.30
[iOS] ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋˜ Generic  (0) 2021.07.29
  1. frame vs bounds
  2. Origin (x, y) : ์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•œ ์ฐจ์ด
  3. Size (width, height) : ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ฐจ์ด
  4. Move : ์›€์ง์ž„์— ๋Œ€ํ•œ ์ฐจ์ด
  5. Sample
  6. ๋ ˆํผ๋Ÿฐ์Šค
'๐ŸŽ iOS & Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [iOS] ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” HTMLํƒœ๊ทธ ์ œ๊ฑฐํ•˜๊ธฐ
  • [iOS] Convenience init(ํŽธ์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €)
  • [iOS] ์˜ต์…”๋„, Optional
  • iOS Issue(1) - Build input file cannot be found
taeeekki
taeeekki
๐ŸŒฑiOS ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•™์ƒ์ด ๋งŒ๋“œ๋Š” ๋ธ”๋กœ๊ทธ
taeeekki
taekki.dev
taeeekki
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • All (130)
    • ๐ŸŒฑ SeSAC (40)
    • โ˜€๏ธ 100DaysOfSwift (18)
    • ๐ŸŽ iOS & Swift (60)
    • ๐Ÿ“ฉ Essay (3)
    • ๐ŸŽ Tip (4)
    • ๐ŸŒˆ UIUX (2)
    • ๐Ÿง OOP (1)
    • ๐Ÿฅณ Side Project (0)
    • โœจ Problem Solving (1)
    • ๐Ÿ“ Note (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

iOS H.I.G
์˜ต์…”๋„
OOTD
TIL
tableView
๊ฐœ๋ฐœ
network
SeSAC
GIT
์Šค์œ„ํ”„ํŠธ ๋ฌธ๋ฒ•
Diary App
์†ํŠธ
swift
URLSession
Realm
PageViewController
์Šค์œ„ํ”„ํŠธ
github
iOS UIUX
commit
์˜ค์˜คํˆฌ๋‘
์Šค์œ„ํ”„ํŠธ๋ฌธ๋ฒ•
github tip
iOS ์•ฑ ์ถœ์‹œ
๊ฐœ์ธ ์•ฑ ์ถœ์‹œ
100DaysOfSwift
๊นƒํ—ˆ๋ธŒ
CollectionView
IOS
ํด๋กœ์ €

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.3
taeeekki
[iOS] frame๊ณผ bounds
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.