sladuf
200
sladuf
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (83)
    • ๐Ÿ“š Programming (32)
      • Swift (13)
      • JAVA (2)
      • Python (6)
      • SQL (6)
      • Web (5)
    • ๐Ÿ“ฑ iOS (25)
      • Base (7)
      • SwiftUI (9)
      • UIKit (7)
      • ์ธ๊ฐ• & ์ฑ… (2)
    • ๐Ÿ”— Algorithm (20)
      • Python (12)
      • Swift (3)
      • Tip (5)
    • ๐Ÿ—‚ ETC (6)

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

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

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์Šค์œ„ํ”„ํŠธ
  • Swift

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

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธ€์“ฐ๊ธฐ ์„ค์ •
hELLO ยท Designed By ์ •์ƒ์šฐ.
sladuf

200

[UIKit] toast message ๋งŒ๋“ค๊ธฐ
๐Ÿ“ฑ iOS/UIKit

[UIKit] toast message ๋งŒ๋“ค๊ธฐ

2023. 2. 16. 02:17

 

 


 

์•ฑ์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด toast msg๋ฅผ ๋„์›Œ์„œ ์ •๋ณด๋ฅผ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์•„์‰ฝ๊ฒŒ๋„ iOS์—๋Š” ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์ด ์—†๋‹ค..

์ง์ ‘ ๋งŒ๋“ค์ž!

 

 

์šฐ์„  UIView๋ฅผ ์ƒ์†ํ•˜๋Š” class๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค

public class ToastMessage: UIView {}

 

์ €๋Š” ์š”๋ก  ์ข…๋ฅ˜์˜ ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€๋ฅผ ๋งŒ๋“ค๊ฑฐ์—์š” (x๋Š” ์ œ์™ธ)

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ํ”„๋กœํผํ‹ฐ์™€ enum์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

public enum ToastType {
    case common, alert, info
}

var text = UILabel()
var icon = UIImageView()
var type : ToastType

 

UI๋Š” ๊ฐ์ž ์ทจํ–ฅ๊ป ๋งŒ๋“œ์‹œ๊ณ 

(์ƒ๋žต)

 

ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€์˜ ํŠน์ง•์€ ์ž ๊น ๋–ด๋‹ค ์‚ฌ๋ผ์ง€๋Š”๊ฑฐ ์ž–์•„์š” ?

๊ทธ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด animate๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค

 

animate

animate๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๋Š”๋ฐ์š”,

class func animate(
    withDuration duration: TimeInterval,
    animations: @escaping () -> Void,
    completion: ((Bool) -> Void)? = nil
)

animations ๋ถ€๋ถ„์— ํด๋กœ์ €๋กœ ์‹คํ–‰ํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค

withDuration์€ animations์„ ์‹คํ–‰์‹œํ‚ค๋Š”๋ฐ ์–ผ๋งˆ์ •๋„์˜ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•  ๊ฒƒ์ธ์ง€ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค

์ดˆ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์š”!

completion์—๋Š” animations๊ฐ€ ๋๋‚˜๊ณ  ๋‚˜์„œ ์‹คํ–‰ํ•  ๋‚ด์šฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

์ €๋Š” toastํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค

public func toast(){

    UIView.animate(withDuration: 0.5) {
        print("toast : \(self.text.text!)")
        self.isHidden = false
        self.alpha = 0.9
    } completion: { _ in
        UIView.animate(withDuration: 0.5, delay: 2) {
            self.alpha = 0
        } completion: { _ in
            self.isHidden = true
        }
    }

}

alpha๋Š” 0~1์‚ฌ์ด์— ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํˆฌ๋ช…๋„๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค

(0์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ํˆฌ๋ช…ํ•ด์ ธ์š”)

์ด ํ•จ์ˆ˜๋Š” 0.5์ดˆ์— ๊ฑฐ์ณ์„œ ํˆฌ๋ช…๋„๋ฅผ 0.9๋กœ ์˜ฌ๋ฆฌ๊ณ 

์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋๋‚œ ํ›„์—๋Š” 2์ดˆ ํ›„์— 0.5์ดˆ์— ๊ฑฐ์ณ์„œ ํˆฌ๋ช…๋„๋ฅผ 0์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—์š”

์ฆ‰, ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€๊ฐ€ 2์ดˆ ๋–ด๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๊ฑฐ์—์š”

 

isHidden์„ ์จ์ค€ ์ด์œ ๋Š” ํ˜น์‹œ๋‚˜ toast msg ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ view๋“ค์ด ๋ฐฉํ•ด๋ฐ›์„๊นŒ๋ด ์ž‘์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค~!

 

toast๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šฐ๊ธฐ ์œ„ํ•ด์„œ

ToastMessage init๋ถ€๋ถ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค

public init(type: ToastType){
    self.type = type
    super.init(frame: .zero)
    // ์ดˆ๊ธฐํ™” ํ•  ๋•Œ view ์•ˆ๋ณด์ด๊ฒŒ
    self.isHidden = true
    self.alpha = 0
}

 

 

ToastMessage๋ฅผ ์‚ฌ์šฉํ•  ๋ทฐ์ปจ์—์„œ toast()๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ์ด๋ ‡๊ฒŒ!

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋„์šธ ์ˆ˜ ์žˆ๋Š” Toast Message๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค :)

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ

'๐Ÿ“ฑ iOS > UIKit' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[UIKit] TableView Multiple Cell, multi type json data parsing  (0) 2023.06.27
[UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (3/3)  (0) 2023.04.03
[UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (2/3)  (0) 2023.01.08
[UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (1/3)  (0) 2023.01.08
Passing Data (์ง์ ‘์ „๋‹ฌ๋ฐฉ์‹)  (0) 2022.06.27
    '๐Ÿ“ฑ iOS/UIKit' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [UIKit] TableView Multiple Cell, multi type json data parsing
    • [UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (3/3)
    • [UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (2/3)
    • [UIKit] CustomDatePicker ๋งŒ๋“ค๊ธฐ (1/3)
    sladuf
    sladuf

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