๐ป ํ๋ก์ ํธ ๋ชฉํ: ์ฌ์ฉ์๊ฐ DatePicker์์ ์ ํํ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก +100์ผ, +200์ผ, +300์ผ, +400์ผ์ด ํฉ์ฐ ๋ ๋ ์ง๊ฐ ์ด๋ฏธ์ง ์์ ๋จ๋๋ก ๋ง๋ค๊ธฐ.
โ๏ธ ์ดํด๊ฐ ํ์ํ ๊ฐ๋ : IBOutlet, IBAction, Sub ImageView, Shadow ์ ClipsToBound
๐ญ ์ด๋ ค์ ๋ ๋ถ๋ถ: ์ค์ ํ ๊ทธ๋ฆผ์๊ฐ ์๋ฎฌ๋ ์ดํฐ์ ๋์ค์ง ์์, (์ฒซ) ๋งค๊ฐ๋ณ์ ์์ฉ, ํจ์์ ์ ๋ฆฌ
๐ ์ด๋ฏธ์ง๋ทฐ ๋ค๋ก ๊ทธ๋ฆผ์ ๋ง๋ค๊ธฐ
(1) UIView -> UIImage -> label : ๊ฐ ์์ฑ์ ์ด๋ฆฌ๋ ๋ ์ด์ด ์๊ธฐ
- UIView๋ฅผ ์์์ผ๋ก ์ฐจ๊ณก์ฐจ๊ณก ๋ ์ด์ด๋ฅผ ์์์ฃผ์ด์ผ ํ๋ค.
- UIImageView๋ง ์ฐ๋ฉด layer.cornerRadius ์ค์ ํ ๋ shadow ์ค์ ํ ๋ถ๋ถ์ด ํจ๊ป ์๋ ค๋๊ฐ ์ ์๊ธฐ ๋๋ฌธ์. (์ ์ฌ๊ฐํ ์์ ๋๊ทธ๋ผ๋ฏธ๋ฅผ๊ฝ ์ฐจ๊ฒ ๋ฃ์์ ๋, ๋๊ทธ๋ผ๋ฏธ์ ๋ฟ์ง ์์ ์ ์ฌ๊ฐํ ๋ถ๋ถ์ด ๋ชจ๋ ์ณ๋ด์ง๋ค๋ ์์ผ๋ก ๊ธฐ์ตํ๊ธฐ)
- โ๏ธ๊ณผ์ ๋ฆฌ๋ทฐ๋ฅผ ๋ค์ผ๋ฉฐ ๋ด๊ฐ ๋ชฐ๋๋ ๋ถ๋ถ์ด UIView๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ UIImageView์ label์ด ์์ ๋์ด์ผํ๋ค๋ ๊ฑธ ๋ชฐ๋ผ์ ๋ฐฑ๋ ๊ทธ๋ฆผ์ ์ค์ ์ ํด๋ ์๋ฎฌ๋ ์ดํฐ์ ๋จ์ง ์์์๋ค.
์ ๋ง ๋ญ ํด๋ ๋จ์ง ์์์.
(2) layer.cornerRadius
backgroundImage.layer.cornerRadius = 20
backgroundView.layer.shadowColor = UIColor.black.cgColor
backgroundView.layer.shadowOffset = CGSize(width: 10, height: 10)
backgroundView.layer.shadowRadius = 10
backgroundView.layer.shadowOpacity = 0.5
backgroundView.clipsToBounds = false
- shadow ์ค์ ์ code snippet(๋จ์ถํค: command + shift + L) ์ ์ ์ฅํด๋ ๊ฑธ ๊บผ๋ด ์ผ๋ค.
- UIView๋ฅผ ํ์ฉํ์ ๊ทธ๋ฆผ์๊ฐ ๋๋์ด ์๋ฎฌ๋ ์ดํฐ์ ๋ํ๋ฌ๋ค! ๋์ ๋ชจ์๋ฆฌ๋ ํจ๊ป.
backgroundImage.layer.cornerRadius = 20
backgroundView.layer.cornerRadius = 20
backgroundView.layer.shadowColor = UIColor.black.cgColor
backgroundView.layer.shadowOffset = CGSize(width: 10, height: 10)
backgroundView.layer.shadowRadius = 10
backgroundView.layer.shadowOpacity = 0.5
backgroundView.clipsToBounds = false
- '๋ชจ์๋ฆฌ๊ฐ ์ ๋์์ง?'
- UIView์๋ layer.cornerRadius ์ ์ฉํด์ผํ๋ ๊ฑธ ๋ชฐ๋๊ธฐ ๋๋ฌธ์. + shadow ์ค์ ์ UIView๊ฐ ์๋๋ผ UIImageView์๋ค๊ฐ ํด๋์์.
- ๋ฐ๋ก IBOutlet์ UIView๋ฅผ ๋ง๋ค๊ณ ์์ ์ถ๊ฐํ๊ณ shadow ์ค์ ์ UIView๋ก ๋ฐ๊พธ๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋์๋ค.
(3) clipsToBounds
-UIview = Super View , UIImageView = Sub View
- clipsToBounds = true ๋ก ํ๋ฉด ๊ทธ๋ฆผ์๊ฐ ๋ค์ ์ฌ๋ผ์ ธ์๋๋ฐ, ์ด๋ UIview์ ์ค์ ํ ๊ทธ๋ฆผ์ ์์ญ์ ์ณ๋ด๋ฒ๋ฆฌ๊ฒ ๋ค!์ ๊ฐ์ ์๋ฏธ๋ผ์ false๋ก ์ค์ ํด์ฃผ์ด์ผ ํ๋ค. ํจ์ ์ ๋ง๊ณ ๋ ์ธ์คํํฐ ์์ญ์์๋ ์ค์ ํ ์ ์๋ค.
โ๏ธ๋์ค์ ์์ (๊ฐ์ )ํด์ผํ๋ ๋ถ๋ถ
: ์์ง ํจ์๋ฅผ ์์ ๋กญ๊ฒ ์์ฉํด์ ์ฐ์ง ๋ชป ํด์ ๋ง์ ๋ถ๋ถ์ด ์ค๋ณต ๋๋ ์์ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํ์ง ๋ชป ํ๋ ๋ฌธ์ ๋ฐ์.
: ์๋ ์์ด ๋ฌธ์ ์ ๋ถ๋ถ. Calendar.current.date(byAdding: .day, value:100, to:sender.date) & dateCaountBox100.text ๋ถ๋ถ์ ํจ์์์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ฉด ๊ฐ๊ฒฐํ๊ฒ ํ๋์ ์์ ์ ์งํ ์ ์์ ๊ฒ ๊ฐ๋ค. ํจ์๊ฐ ์ข..๋... ์ต์ํด์ง๋ฉด... ์์ ํด๋ด์ผ๊ฒ ๋ค.
@IBAction func datePickerValueChanged(_ sender: UIDatePicker) {
print("์ก์
์ ๋จ")
// 100
let result = Calendar.current.date(byAdding: .day, value: 100, to: sender.date)
let format = DateFormatter ()
format.dateFormat = "yyyy๋
MM์ dd์ผ"
let value = format.string(from: result!)
dateCountBox100.text = value
}
'๐ Dev > UIKit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[UIKit/Storyboard] ํค๋ณด๋ ๋ด๋ฆฌ๊ธฐ (0) | 2023.07.30 |
---|---|
[UIKit/Storyboard] ํ ํ๋ก์ ํธ์์ ๋ค๋ฅธ ์คํ ๋ฆฌ๋ณด๋ ๋ณด๋ ๋ฒ (0) | 2023.07.30 |
[UIKit/Storyboard] ์์ธ๋ ํจ์ (@IBOutlet)๊ณผ ์ก์ ํจ์ (@IBAction) (0) | 2023.07.29 |
[UIKit/Storyboard] ์ฌ(Scene)๊ณผ Class ์ฐ๊ฒฐ (0) | 2023.07.29 |
[UIKit/Storyboard] Entry Point (0) | 2023.07.23 |