728x90 ๋ฐ์ํ ๐ iOS/UI59 [iOS/UI] ๋ค๋น๊ฒ์ด์ ๋ฐ ํดํธ ๋ฐ ํ์ดํ ์ปฌ๋ฌ๋ฐ๊พธ๊ธฐ 1 2 3 4 5 6 7 8 //iOS 13์ด์์ผ ๋ ํ์ดํ ์ปฌ๋ฌ ๋ฐ๊พธ๋ ๋ฒ if #available(iOS 13.0, *) { navigationController?.navigationBar.standardAppearance.titleTextAttributes = [.foregroundColor: UIColor.white] } else { navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white] } //๋ฐ ํดํธ ๋ฐ๊พธ๋ ๊ฒ self.navigationController?.navigationBar.barTintColor = UIColor.darkGray Colored by Color Scripter .. 2020. 6. 29. [iOS/UI] UITextField ๊ธ์ ์ ์ ํํ๊ธฐ(UITextField set MaxLength) Swift ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ํ ์คํธํ๋์ ๊ธ์ ์๋ฅผ ์ ํํ๋ ๋ฒ์ ๋ํด์ ๊ณต์ ํ๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ ๋จผ์ ์ํ์๋ ๋ทฐ์ปจํธ๋กค๋ฌ์ UITextFieldDelegate๋ฅผ ์ฑํํด์ฃผ์๊ณ ์ ํํ ํ ์คํธํ๋์ ๋๋ฆฌ๊ฒ์ดํธ๋ฅผ self๋ก ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ ๋ฆฌ๋ณด๋์์ ํ ์คํธํ๋ ์ก์ ์ ์ฐ๊ฒฐํด์ฃผ๋๋ฐ ๋ฐ๋์ Editing Changed๋ก ํด์ค๋๋ค. ๊ทธ ๋ค์์ผ๋ก ์ด์ ๊ฐ์ฅ ์ค์ํ ๊ธ์์๋ฅผ ์ ํํ ๋ฉ์๋๋ฅผ ์๋์ฒ๋ผ ๋ง๋ค์ด์ค๋๋ค. 1 2 3 4 5 func checkMaxLength(textField: UITextField!, maxLength: Int) { if (textField.text?.count ?? "" > maxLength) { textField.deleteBackward() } } Colored .. 2020. 6. 21. [iOS/UI] UIView ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ทธ๋ผ๋ฐ์ด์ ์ ๋ฃ๊ธฐ (UIView Background gradient color) ์ค๋์ UIView์ ๊ทธ๋ผ๋ฐ์ด์ ์ ํจ๊ณผ๋ฃ๋ ๋ฒ์ ์์๋ด ์๋ค. ์ ์ผ ๋จผ์ ์คํ ๋ฆฌ๋ณด๋์์ ์ํํ๊ธฐ ์ํ view๋ฅผ ํ๋ ๋ง๋ค์ด์ฃผ๊ณ ๋ทฐ์ปจํธ๋กค๋ฌ์ ์ฐ๊ฒฐ์์ผ์ค๋๋ค. ๊ทธ๋ฐ ๋ค์ extension์ผ๋ก UIView๋ฅผ ํ์ฅ์์ผ์ฃผ๊ณ ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ ์ข ๋ฅ ์์ ๋ฐ๋ ๋ฉ์๋๋ก setGradient๋ฅผ ๋ง๋ค์ด์ค๋๋ค. ์ฐ์ CAGradientLayer์ธ gradient๋ฅผ ๋ง๋ค์ด์ค ๋ค gradient.colors๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ ์ข ๋ฅ๋ฅผ ๋ฐ์ต๋๋ค. gradient.locations๋ ๊ทธ๋ผ๋ฐ์ด์ ์ด ์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ง ์ ํ๋ ๊ฒ์ ๋๋ค. startPoint์ endPoint๋ ๊ฐ ๊ฐ ์์์ ๊ณผ ๋์ ์ ์ ํด์ฃผ๋ ๊ฒ๋๋ค. frame์ ํด๋น view์ ๋ง๊ฒ ๋ง์ถฐ์ฃผ๋ bounds๋ฅผ ์จ์ฃผ์๊ณ ํด๋น view์ layer์ addSublayer๋ก .. 2020. 5. 27. [iOS/UI] Swift ํญ๋ฐ์์ดํ ์ ์ด๋ฏธ์ง ์ฝ์ ํ๊ธฐ(UITabBarItem Using oringinal image) ์ฐ์ ํญ๋ฐ์์ดํ ์ ๋ฃ์ ์ด๋ฏธ์ง๋ฅผ Asset์ ๋ฃ์ด์ค๋ค. ๊ทธ ๋ค์ ํด๋น ์ด๋ฏธ์ง์ Image Set์์ Render As๋ฅผ Original Image๋ก ๋ฐ๊ฟ์ค ๋ค ํด๋น ๋ทฐ์ปจํธ๋กค๋ฌ์ Image๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ์ด๋ฏธ์ง๊ฐ ๊ทธ๋๋ก ์ ์ฉ๋๋ค. ์๋์ ๊ฐ์ด ์ ์ ์ฉ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ํด๋น ์ด๋ฏธ์ง๋ฅผ ์กฐ๊ธ ๋ ์๋๋ก ๋ฎ์ถ๊ณ ์ถ๋ค๋ฉด ํด๋น ํญ๋ฐ์์ดํ ์ Image Inset์ ์กฐ์ ํ๋ฉด ๋๋ค! 2020. 4. 3. [iOS/UI] Swift ์จ๋ฒ ์ฌ์ง ๊ณ ๋ฅธ ๊ฐฏ์ ์ฐจ๋ก๋ก ๋ฒํธ ๋ถ์ฌํ๊ธฐ ์ฐ์ ๋๋ ์๋ ์นดํก ์ฌ์ง๊ณ ๋ฅด๊ธฐ์ ๊ฐ์ด ํญํ ์์๋๋ก ๋ฒํธ๊ฐ ๋ถ์ฌ๋๋ฉด์ ์ฌ์ง๋ฐฐ์ด์ ์ฌ์ง์ด ๋ค์ด๊ฐ๊ฒ ํ๊ณ ๋ค์ ํญํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ฌ์ง์ ์ญ์ ํด์ฃผ๊ณ ๊ทธ๋ณด๋ค ํฐ ๋ฒํธ๋ค์ ์ญ์ ํ ๊ฐฏ์๋งํผ ๋ฒํธ๊ฐ ์์์ ธ์ผํ๋ค. ์ฐ์ 2๊ฐ์ ๋ฐฐ์ด์ด ํ์ํ๋ฐ ํ๋๋ ์ฌ์ง์ ๋ด์ ๋ฐฐ์ด๊ณผ ํ๋๋ ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ์ ํ๋์๋์ง ๋ด์ ๋ฐฐ์ด์ด ํ์ํ๋ค. 1 2 var photos = [UIImage]() var photoarray = [Int]() ๊ทธ ๋ค์ cellForItemAt์ ํฌํ ์ด๋ ์ด๊ฐ ๋น์ด์์ง์๋ค๋ฉด !photoarray.isEmpty{ for๋ฌธ์ ์ด์ฉํด photoarray์์ ์๋ ์ซ์๋ค์ ์ฐจ๋ก๋ก indexPath์ ๋น๊ตํด์ ๋ง๋ค๋ฉด ํด๋น ์ซ์๋ผ๋ฒจ(cell.number)๋ฅผ i๋ก ๋ฐ๊ฟ์ค๋ค. ๊ทธ๋ฌ๋ฉด photoarray์์ ์์๋๋ก ํ ์ค.. 2020. 4. 1. [iOS] ๋ฐ์น์คํฌ๋ฆฐ ์ ๋ฐ์ดํธํ๊ธฐ(LaunchScreen Update) ์ฐ์ ํฐ์ด๋ ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ ์ญ์ ํ๊ณ ์ ์์ ๋๊ณ ๋ค์ ์ผ ๋ค์ ์ฑ์ ๋ค์ ์ค์นํ๋ฉด ๋ฐ์น์คํฌ๋ฆฐ์ด ์ ๋ฐ์ดํธ ๋๋ค! 2020. 3. 25. [iOS] Swift ์ฌ์ง ํ๊ฐ๋ฐ์ ์ํ์๊ธฐ ๋ฐ ์ธํ ์ผ๋ก ์ธ๋ํ๊ธฐ ์ฐ์ ์ฒดํฌํฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌํผ๋ฏธ์ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ๊ฐ ์ํ์ ๋ฐ๋ผ ํด์ผํ ์ผ์ ์ ํด์ค๋ค 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 func checkPhotoLibraryPermission() { let status = PHPhotoLibrary.authorizationStatus() switch status { case .authorized: self.testlabel.text = "ํ๋ฝ" case .denied, .restricted : self.testlabel.text = "์์ง" case .notDetermined: self.testlabel.text = "๊ฒฐ์ ๋ชปํจ" PHPhotoLibrary.requestAuthorization { statu.. 2020. 3. 23. [iOS] ์ธ๊ทธ๋ก ํ๋ฉด ์ด๋ ์ ๋ค๋น๊ฒ์ด์ ํ์ดํ ๋ฐ๊พธ๊ธฐ ์๋ ๋ค๋น๊ฒ์ด์ ํ์ดํ์ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ด์ฉํด์ ๋ฐ๊พธ๋ฉด ๋๋ค. ํ์ง๋ง ์ธ๊ทธ๋ก ์ด๋ ์์ ์ํ๋ ํ ์คํธ๋ก ๋ฐ๋์ง๊ฐ ์์๋ค. ๊ตฌ๊ธ๋งํด ๋ณธ ๊ฒฐ๊ณผ ViewController์ ๋ฐ๋ก title์ด๋ผ๋ property๊ฐ ์กด์ฌํ๊ณ ์ด๊ฒ์ ๋ฐ๊ฟ์ค์ผ ๋ค๋น๊ฒ์ด์ ํ์ดํ์ด ๋ฐ๋๊ฒ ๋๋ค. ์ด๋ ๊ฒ name์ ์ค์ ํด์ค ๋ค ํ๋ฉด์ ์ด๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ดํ์ด ๋ฐ๋๊ฒ ๋๋ค. 2020. 2. 29. [iOS] UITableViewController์์ ์ธ๊ทธ๋ก ๊ฐ ๋๊ธฐ๊ธฐ ์ฐ์ ์ ์์ ์๋ ๋ฒํผ์ addTarget์ ์ค์ ํด์ฃผ๊ณ action์ #selector(@objcํจ์)๋ฅผ ๋ฃ์ด์ค๋ค. @objc ํจ์์ performSegue๋ฅผ ์ด์ฉํด ํด๋น ์ธ๊ทธ์ ์์ด๋ดํฐํผ์ด๋ฅผ ์ ํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ override๋์ด์๋ ๋ฉ์๋ prepare๋ฅผ ์ด์ฉํด ๊ทธ ์์ param์ด๋ผ๋ ์์๋ฅผ ๋ง๋ค์ด์ค ๋ค segue.destination as! ์ํ๋๋ทฐ์ปจํธ๋กค๋ฌ ์ํ๋๋ทฐ์ปจํธ๋กค๋ฌ์์ ๋ณ์ ์ค ๋ฐ๊ฟ ๊ฐ์ ์ ๋ ฅํด์ค๋ค. ์ถ๋ฐํ ๋ทฐ์ปจํธ๋กค๋ฌ์์ control์ ํด์ ๋์ฐฉํ๊ณ ์ถ์ ๋ทฐ์ปจํธ๋กค๋ฌ์ show๋ฅผ ํด์ฃผ๊ณ ์ค๋ฅธ์ชฝ ์๋จ์ identifier์ ์ํ๋ ์ด๋ฆ์ ์ค์ ํด์ค๋ค. 2020. 2. 29. [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/UI] ํ ์ด๋ธ๋ทฐ ์ ์ผ ์๋ก ๊ฐ๊ธฐ ์ํ๋ ๊ณณ์๋ค ๋ฃ์ผ๋ฉด ํ ์ด๋ธ๋ทฐ์ ๋งจ ์ ์ชฝ์ผ๋ก ์ด๋ํ๋ค. 1 tableView.contentOffset = CGPoint(x: 0, y: 0 - tableView.contentInset.top) 2020. 2. 14. ์ด์ 1 2 3 4 5 ๋ค์ 728x90 ๋ฐ์ํ