๐ŸŽ iOS/UIKit

    [iOS] Completion Handler์„ ์ด์šฉํ•œ Loading Progress ๊ตฌํ˜„

    GitHub - krimpedance/KRProgressHUD: A beautiful and easy-to-use progress HUD for your iOS. A beautiful and easy-to-use progress HUD for your iOS. - GitHub - krimpedance/KRProgressHUD: A beautiful and easy-to-use progress HUD for your iOS. github.com KRProgressHUD๋ฅผ ์ด์šฉํ•˜์—ฌ Loading Progress๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž. ์ด์ œ pod init - pod '์‚ฌ์šฉํ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ' - pod install์˜ ๋ฃจํ‹ด์— ์™„๋ฒฝ ์ ์‘ ^-^v Completion handler๋Š” ์–ด๋– ํ•œ ์ผ์ด ๋๋‚ฌ์„ ๋•Œ ์ง„ํ–‰ํ•  ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜..

    [iOS] WebKit View | ์•ฑ์—์„œ Web ํŽ˜์ด์ง€ ์—ด๊ธฐ

    ์—ด๊ณ  ์‹ถ์€ ์›นํŽ˜์ด์ง€์˜ URL๋งŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์•ฑ์—์„œ ๋ฐ”๋กœ ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋ฅผ ์—ด ์ˆ˜ ์žˆ๋‹ค! ๋จผ์ €, storyboard์— WebKit View๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. Web View๋Š” deprecated ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. (old version) Webkit์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์—ฐ๊ฒฐ๋˜๋Š” ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— WebKit ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ import ํ•ด์ค€๋‹ค. import WebKit ๋„ค์ด๋ฒ„๋ฅผ ์—ด๊ธฐ ์œ„ํ•ด ๋„ค์ด๋ฒ„์˜ ์ฃผ์†Œ๋ฅผ url์— ๋„ฃ์–ด์ค€๋‹ค. import UIKit import WebKit class ViewController: UIViewController { @IBOutlet weak var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() let ..

    [iOS] Splash Screen(์Šคํ”Œ๋ž˜์‹œ ์Šคํฌ๋ฆฐ) ๊ตฌํ˜„ํ•˜๊ธฐ | Lottie Animation

    ์˜ค๋Š˜์€ Splash Screen์„ Animation์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณผ ์˜ˆ์ • Splash Screen์€ Launch Screen(๋Ÿฐ์น˜์Šคํฌ๋ฆฐ)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. (= ์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ ์•ฑ์ด ๋กœ๋”ฉ๋˜๋Š” ๋™์•ˆ ๋นˆ ํŽ˜์ด์ง€๋งŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก 1~5์ดˆ ๊ฐ„ ๋–ด๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ํ™”๋ฉด) ๋„ทํ”Œ๋ฆญ์Šค์˜ ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด ๋””์ž์ด๋„ˆ ์—†์ด ํ˜ผ์ž์„œ ์–ด๋–ป๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ• ๊นŒ? Lottie๋ฅผ ์ด์šฉํ•˜๋ฉด ํ•  ์ˆ˜ ์žˆ๋‹ค ! ์—.... Lottie๊ฐ€ ๋ญ์ž„..? Lottie๋Š” Airbnb ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋ฐ”์ผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. https://lottiefiles.com์—์„œ ์—ฌ๋Ÿฌ ๋ชจ๋ฐ”์ผ์šฉ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ Free Animations๋„ ์žˆ๋‹ค ใ…Žใ…Ž ๋“ค์–ด๊ฐ€๋ฉด ์˜ค๋ฅธ์ชฝ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋””์ž์ด๋„ˆ๋ถ„๋“ค๊ป˜์„œ ์˜ฌ๋ ค์ฃผ์‹  ๋‹ค์–‘ํ•œ ๋ชจ..

    [iOS][UI] Label: Number of Lines

    Label > Number of Lines๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด Label์˜ ํฌ๊ธฐ๋งŒํผ ๋ผ์ธ ๊ฐœ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

    [iOS][m1] Xcode Playground output์ด ์•ˆ๋ณด์ผ ๊ฒฝ์šฐ

    m1 ์œ ์ €์ผ ๊ฒฝ์šฐ xcode๋ฅผ Rosetta๋กœ ์—ด์–ด ์‚ฌ์šฉํ•˜๋ฉด Playground output์ด ์•ˆ๋ณด์ด๋‹ˆ ์ •๋ณด๊ฐ€์ ธ์˜ค๊ธฐ>Rosetta๋กœ ์—ด๊ธฐ๋ฅผ ํ•ด์ œํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    [iOS] IBAction๊ณผ IBOutlet, ์—ฐ๊ฒฐ ํ›„ ์‚ญ์ œ ์‹œ ์ฃผ์˜ํ•  ์ 

    Outlet: code์—์„œ storyboard๋กœ object๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ Actions: storyboard์˜ controls์—์„œ swift code๋กœ ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” ๊ฒƒ IBOutlet: ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ƒ์— ์„ ์–ธํ•œ ๊ฐ์ฒด(View, Label ...)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜ IBAction: ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ƒ ์„ ์–ธํ•œ ๊ฐ์ฒด๊ฐ€ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜ object๋ฅผ ํด๋ฆญํ•˜๊ณ  control ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋งˆ์šฐ์Šค๋กœ Assistant code์— ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ์œผ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค. ๋ณดํ†ต viewDidLoad()๋ฅผ ๊ธฐ์ค€์œผ๋กœ IBOutlet์€ ์œ„์—, IBAction์€ ์•„๋ž˜์— ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค. // ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Label ํ…์ŠคํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฒŒ IBAction์„ Button์— ์—ฐ๊ฒฐํ•ด๋‘์—ˆ๋‹ค. IBAction ์‚ญ์ œ ์‹œ ์ฃผ์˜ํ•  ์  ์—ฐ..

    [iOS] storyboard์— ์ถ”๊ฐ€๋œ view๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ์•ˆ๋ณด์ผ ๋•Œ

    view object๋ฅผ storyboard์— ์ถ”๊ฐ€ํ–ˆ๋Š” ๋ฐ ๋ฐฐ๊ฒฝ๊ณผ object ์ƒ‰์ƒ์ด ๊ฐ™์•„์„œ ๋ณด์ด์ง€ ์•Š์„ ๋•Œ ์˜ค๋ฅธ์ชฝ์ฒ˜๋Ÿผ ํ‘œ์‹œํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ํŒ Editor > Canvas > Bounds Rectangles โœ“

    [iOS] ๊ณต์œ ํ•˜๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ iPhone/iPad

    var sharedObject = [Any]() sharedObject.append(image) // image = ๊ณต์œ ํ•  ๋•Œ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ์ด๋ฏธ์ง€ let random = Int.random(in: 0...(sharedText.count - 1)) sharedObject.append(sharedText[random] + "\n\n๊ณต์œ ํ•  ๋•Œ ํ•จ๊ป˜ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ๋ฌธ์žฅ") let vc = UIActivityViewController(activityItems: sharedObject, applicationActivities: nil) vc.popoverPresentationController?.permittedArrowDirections = [] vc.popoverPresentationController?.sour..