๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS138

[iOS] ํƒญ๋ฐ”๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ํŠน์ • ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜๊ธฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒญ๋ฐ”์ปจํŠธ๋กค์— ์†ํ•ด ์žˆ๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋‹ค๋ฅธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜๋ฉด ํƒญ๋ฐ”๊ฐ€ ์‚ฌ๋ผ์ง„ ์ฑ„ ํ™”๋ฉด์ด ์ „ํ™˜๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ํ•˜์ง€๋งŒ ์•„๋ž˜ ์ฒ˜๋Ÿผ ํƒญ๋ฐ”์ปจํŠธ๋กค๋Ÿฌ์— ์†ํ•ด์žˆ๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ณ  ํƒญ๋ฐ” ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ฐ๊ฒฐ์„ ๋„ค๋น„๊ฒŒ์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋กœ ํ•ด์ฃผ๋ฉด ํƒญ๋ฐ”๊ฐ€ ์œ ์ง€๋œ ์ฑ„ ํ™”๋ฉด์ด ์ „ํ™˜๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ํƒญ๋ฐ”๊ฐ€ ์œ ์ง€๋œ ์ฑ„ ํ™”๋ฉด์ด๋™ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. 2020. 2. 28.
[iOS/UI] ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ๋ฐฑ๋ฒ„ํŠผ ์ปค์Šคํ…€ํ•˜๊ธฐ(UINavigationBarItem Custom) ํŠน์ • ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ™”๋ฉด์„ ์ด๋™ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋ฐฑ๋ฒ„ํŠผ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์œผ๋กœ ๋„์šฐ๊ณ  ๋ฐฑ๋ฒ„ํŠผ๊ณผ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ฒŒ ํ•˜๊ณ ์‹ถ์—ˆ๋‹ค. ๋ฐ”๋ฒ„ํŠผ์•„์ดํ…œ์—์„œ ์ž์‹ ์ด ์›ํ•˜๋Š” ์ด๋ฏธ์ง€์™€ style tagget action์„ ๋งŒ๋“ค์–ด์ค€ ๋’ค ๋„ค๋น„๊ฒŒ์ด์…˜ ์•„์ดํ…œ์—์„œ ์™ผ์ชฝ ๋ฐ”๋ฒ„ํŠผ ์•„์ดํ…œ์— ๋งŒ๋“ค์–ด ์ค€ ๋ฐ”๋ฒ„ํŠผ ์•„์ดํ…œ์„ ์„ค์ •ํ•ด์ค€๋‹ค. 1 2 let backbutton = UIBarButtonItem(image: UIImage(named: "passwordOn@3x.png"), style: .done, target: self, action: #selector(back)) self.navigationItem.leftBarButtonItem = backbutton http://colorscripter.c.. 2020. 2. 28.
[iOS] ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ 1 2 3 4 5 6 7 8 9 10 func processTime(blockFunction: () -> ()) { let startTime = CFAbsoluteTimeGetCurrent() blockFunction() let processTime = CFAbsoluteTimeGetCurrent() - startTime print("๊ฑธ๋ฆฐ ์‹œ๊ฐ„ = \(processTime)") } processTime { } http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter https://kka7.tistory.com/67 ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ–‰ ์‹œ๊ฐ„ .. 2020. 2. 16.
[iOS/UI] ํ…Œ์ด๋ธ”๋ทฐ ์ œ์ผ ์œ„๋กœ ๊ฐ€๊ธฐ ์›ํ•˜๋Š” ๊ณณ์—๋‹ค ๋„ฃ์œผ๋ฉด ํ…Œ์ด๋ธ”๋ทฐ์˜ ๋งจ ์œ„ ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. 1 tableView.contentOffset = CGPoint(x: 0, y: 0 - tableView.contentInset.top) 2020. 2. 14.
[iOS/API] Swift๋กœ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ ์นด์นด์˜คSDK์„ค์น˜ ์•„๋ž˜ ์‚ฌ์ง„์—์„œ ํŒŒ๋ž€์ƒ‰ SDK ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค, SDK ์••์ถ•ํ’€๊ณ  xcode์˜ General์— ์•„๋ž˜ Frameworks, Libraries, and Embedded Content ์ด ๋ถ€๋ถ„์— ํ”Œ๋Ÿฌ์Šค ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. (๋‚œ ์ด๋ฏธ ์—ฐ๊ฒฐํ•ด๋†“์€ ์ƒํƒœ๋ผ ์นด์นด์˜ค์˜คํ”ˆSDKํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ๋Š”๋ฐ ์›๋žœ ๋น„์–ด์žˆ๋‹ค.) ๋ˆ„๋ฅด๋ฉด ์ด์™€ ๊ฐ™์€ ์‚ฌ์ง„์ด ๋œจ๋Š”๋ฐ ์ขŒ์ธกํ•˜๋‹จ Add Other์—์„œ Add Files๋ฅผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค ๊ทธ๋ฆฌ๊ณ  ์•„๊นŒ ๋‹ค์šด๋ฐ›์•˜๋˜ SDK์—์„œ KakaoOpenSDK.framework๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€๋˜์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Build Settings์˜ Linking์˜ Other Linker Flags์— -all_load๋ฅผ ๋„ฃ์–ด์ค€๋‹ค ๊ทธ๋ฆฌ๊ณ  ์นด์นด์˜ค ๋””๋ฒจ๋กœํผ ์‚ฌ์ดํŠธ์—.. 2020. 2. 7.
[iOS/UI] System Icon ์‚ฌ์šฉ๋ฒ• ์Šคํ† ๋ฆฌ๋ณด๋“œ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ Image๋ฅผ ๋„ฃ์–ด์ฃผ๊ฑฐ๋‚˜ ์ฝ”๋“œ์ƒ์—์„  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ๋„ฃ์–ด์ค€๋‹ค. UIImage(systemName:"heart") 2020. 2. 5.
[iOS]ํ‘ธ์‰ฌ์•Œ๋ฆผ ๋ณด๋‚ด๊ธฐ import UserNotifications override func viewDidLoad() { super.viewDidLoad() let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert,.sound]) { (granted, error) in } let content = UNMutableNotificationContent() content.title = "๋ ๊นŒ์š”?" content.body = "๋˜๊ฒ ์ง€" let date = Date().addingTimeInterval(3) let dateComponents = Calendar.current.dateComponents([.year,.month,... 2020. 1. 23.
[iOS] link url๋กœ ์ด๋™ํ•˜๊ธฐ let url = NSURL(string:"์›ํ•˜๋Š” ์ฃผ์†Œ")! as URL UIApplication.shared.open(url, options: [:], completionHandler: nil) 2020. 1. 15.
[iOS/UI] ํฐํŠธ ์ ์šฉํ•˜๊ธฐ(feat.๋„ค๋น„๊ฒŒ์ด์…˜ํƒ€์ดํ‹€) ์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  Xcode ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํฐํŠธํŒŒ์ผ์„ ๋ˆ„๋ฅด๊ณ  ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— Target Membership์„ ์ฒดํฌํ•ด์ค€๋‹ค. info.plist์—์„œ Fonts provided by apllication์—์„œ ๋‹ค์šด๋ฐ›์€ ํฐํŠธ์ด๋ฆ„์„ ์•„์ดํ…œ์— ๋„ฃ์–ด์ค€๋‹ค Font Custom์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ Family๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค์šด๋ฐ›์€ ํฐํŠธํŒŒ์ผ์ด ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์˜ ํƒ€์ดํ‹€ ํฐํŠธ๋„ ๋ฐ”๊พธ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ƒ์—์„  ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ํฐํŠธ๊ฐ€ ๋ช‡ ๊ฐœ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์—์„œ ํƒ€์ดํ‹€์— ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋๋‹ค. ์—ฌ๊ธฐ์„œ ํ—ท๊ฐˆ๋ฆฐ ์ ์€ ํฐํŠธ์ด๋ฆ„์ด ํŒŒ์ผ์ด๋ฆ„์ธ๊ฐ€? ์•„๋‹ˆ๋ฉด Family์— ์žˆ๋Š” ์ด๋ฆ„? Style์— ์žˆ๋Š” ์ด๋ฆ„?์ธ์ง€์˜€๋‹ค. ์ •๋‹ต์€ Family์— ์žˆ๋Š” ์ด๋ฆ„์„ ๋„ฃ์–ด.. 2020. 1. 13.
[iOS] ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์„ธ๊ทธ๊ฐ’ ๋„˜๊ธฐ๊ธฐ(UINavigationController Segue and UIRootViewController) ์„ธ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋ ค๋‹ค๊ฐ€ ๋„ค๋น„๊ฒŒ์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋ฐ”๋กœ ๋„˜๊ธฐ๋‹ˆ๊น ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์ƒ๋žต๋˜๋ฉด์„œ ํ™”๋ฉด์ด ์ „ํ™˜๋˜์—ˆ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ๋„ค๋น„๊ฒŒ์ด์…˜์ปจํŠธ๋กค๋Ÿฌ์— ์„ธ๊ทธ๋ฅผ ๊ฑธ์–ด์ค€ ๋’ค ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ์—ฐ๊ฒฐ๋œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ์„ธ๊ทธ๋ฅผ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ  identifier๋ฅผ ์ •ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ๋ณด๋‚ผ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ override func prepare๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ํ…์ŠคํŠธํ•„๋“œ ๊ฐ’์„ ๋„ค๋น„๊ฒŒ์ด์…˜์˜ text ๋ณ€์ˆ˜์— ๋ณด๋‚ด์ฃผ๊ณ  ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ performSegue๊ฐ€ ๋˜๊ฒŒ ํ•œ๋‹ค. withIdentifier์—” ์•„๊นŒ ์ •ํ•ด๋†“์€ ๊ฒƒ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. import UIKit class GoViewController: UIViewController { .. 2020. 1. 12.
[iOS/UI] ํ…์ŠคํŠธํ•„๋“œ ์•ˆ์— ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ ๋ฐ ์—ฌ๋ฐฑ์ฃผ๊ธฐ(UIImage in UITextField and Padding) ํ…์ŠคํŠธํ•„๋“œ ์•ˆ์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๊ณ ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ์œผ๋กœ ๋„ˆ๋ฌด ์น˜์šฐ์ณ์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด์„œ ์ด๋ฏธ์ง€๋Š” ์•ˆ๋„ฃ๊ณ  ์™ผ์ชฝ์— ํŒจ๋”ฉ์„ ์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค.ํ…์ŠคํŠธํ•„๋“œ์— ์ต์Šคํ…์…˜์„ ์ฃผ๊ณ  ์ฒซ ๋ฒˆ์งธ์—” ํŒจ๋”ฉ๋ทฐ๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•ด์„œ width๊ฐ’์œผ๋กœ 10์„ ์ค˜๋ฒ„๋ ค์„œ 10๋งŒํผ ์™ผ์ชฝ์— ํŒจ๋”ฉ์„ ์ฃผ๋Š” ํšจ๊ณผ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.extension UITextField { func addLeftPadding() { let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: self.frame.height)) self.leftView = paddingView self.leftViewMode = ViewMode.always } func addleftimage(image:UIImage) { let le.. 2020. 1. 10.
์ปค์Šคํ…€ ์ด๋ฏธ์ง€ํ”ฝ์ปค ๋ฐ ๋ฉ€ํ‹ฐํ”ฝ(Custom ImagePicker and MultiPick) ํ•œ 2์ฃผ๋™์•ˆ ์ฐพ์•„ ํ—ค๋ฉจ๋˜ ๊ฑด๋ฐ ๊ฒฐ๊ตญ ํ•ด๊ฒฐํ•ด๋ƒˆ๋‹ค. ์•จ๋ฒ”์— ์žˆ๋Š” ์‚ฌ์ง„์„ ๊ณ ๋ฅผ ๋•Œ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๊ณ ๋ฅด๊ณ ์‹ถ๊ณ  ๋‚ด๊ฐ€ ์ปค์Šคํ…€ํ•œ ๋””์ž์ธ์œผ๋กœ ํ”ฝ๋˜๋Š” ๋ชจ์Šต์„ ๋„์šฐ๊ณ ์‹ถ์—ˆ๋Š”๋ฐ ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์จ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๊ณ  ์‰ฝ๊ฒŒ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•จ๋ฒ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝœ๋ ‰์…˜๋ทฐ์— ์ €์žฅํ•ด์„œ ์…€๋ ‰ํŠธ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ”๊พธ๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์•จ๋ฒ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฒ•์€ 1.Appdelegate์— import Photos ๋ฅผ ํ•ด์ค€๋‹ค. 2. PHFetchResult๋ฅผ ๋‹ด์€ allPhotos์™€ ๊ทธ ๊ฐฏ์ˆ˜์ธ photocount๋ฅผ ์ „์—ญ ๋ณ€์ˆ˜ ์„ ์–ธํ•ด์ค€๋‹ค 3. didFinishLaunchingWithIptions ํ•จ์ˆ˜ ์•ˆ์— ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€ ๋’ค 4.์›ํ•˜๋Š” ์ฝœ๋ ‰์…˜๋ทฐ๊ฐ€ ์žˆ๋Š” ํด๋ž˜์Šค๋กœ ๊ฐ€์„œ numberOfItemsInSection์— p.. 2020. 1. 9.
728x90
๋ฐ˜์‘ํ˜•