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

๐ŸŽ iOS/UI59

[iOS] ํ‚ค๋ณด๋“œ๊ฐ€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๊ฐ€๋ฆด๋•Œ ํ•ด๊ฒฐ๋ฒ•(When the keyboard covers text field) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ์ •๋ง ์ž์ฃผ ๋งŒ๋‚˜๋Š” ํ‚ค๋ณด๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ด์š”. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ํ‚ค๋ณด๋“œ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์งœ๋‹ค๊ฐ€ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๋Š” ์ˆœ๊ฐ„ ํ‚ค๋ณด๋“œ ์•„๋ž˜์— ์žˆ๋Š” ํ…์ŠคํŠธํ•„๋“œ๋‚˜ ๋ฒ„ํŠผ๋“ค์ด ๊ฐ€๋ ค์ง€๊ณค ํ•˜๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ๋ฒ•์„ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Preview Storyboard ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์ด ๋น„๊ต์  ์•„๋ž˜์— ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. View์—๋Š” Tap Gesture Recognizer๋ฅผ ๋‹ฌ์•„๋†“๊ฒ ์Šต๋‹ˆ๋‹ค. ViewController ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋งŒ๋“ค์–ด์ค€ ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var textField: UITextField! @IBOutlet weak va.. 2021. 6. 16.
[iOS/UI] PHAsset์„ ๊ณ ํ™”์งˆ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊พธ๊ธฐ(feat.deliveryMode) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด PHAsset์œผ๋กœ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ UIImage๋กœ ๋ณ€ํ™˜ํ• ๋•Œ ๊ณ ํ™”์งˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ด๋ฏธ์ง€๋ทฐ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…ํ•ฉ๋‹ˆ๋‹ค. ViewController ์ด๋ฏธ์ง€๋ทฐ๋ฅผ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var photo:UIImageView! ํฌํ† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์• ์…‹๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ allPhotos๋ฅผ ๋ฐ˜๋“ค์–ด์ค๋‹ˆ๋‹ค. var allPhotos:PHFetchResult? = nil ์• ์…‹๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ํฌํ† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ถŒํ•œ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. func request() { PHPhotoLibrary.requestAuthorization { (status) in if status =.. 2021. 3. 31.
[iOS/UI] ํ…Œ์ด๋ธ”๋ทฐ ์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ๋ทฐ ๋†’์ด ๊ธ€์— ๋”ฐ๋ผ ์กฐ์ •ํ•˜๊ธฐ(Dynamic tableviewcell height by textview text) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•Œ์•„๋ณผ๊ฑด ํ…์ŠคํŠธ๋ทฐ์•ˆ์— ๊ธ€์”จ์— ๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”๋ทฐ์…€์˜ ๋†’์ด๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ •๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณผ๊ฑฐ์—์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ  ํ…Œ์ด๋ธ”๋ทฐ์…€ ์•ˆ์— ํ…์ŠคํŠธ๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ์„ธ์š”! (ํ…์ŠคํŠธ๋ทฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ฑธ ํ•œ ๋ˆˆ์œผ๋กœ ๋ณด๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”๋ทฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒ‰์„ ๊ฒ€์ •์ƒ‰์œผ๋กœ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.) ์˜คํ† ๋ ˆ์ด์•„์›ƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”! TableViewCell ํ…Œ์ด๋ธ”๋ทฐ์— ํ…์ŠคํŠธ๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”! class TableViewCell: UITableViewCell { @IBOutlet weak var textView: UITextView! override func awakeFromNib() { super.awakeFromNib() // Initializa.. 2021. 3. 30.
[iOS/UI] ์ปค์Šคํ…€ XIB UIView ์ ์šฉํ•ด๋ณด๊ธฐ (UITableView,UICollectionView ํฌํ•จ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ ๋“ค์–ด ๋‚ ์”จ ๋„์šฐ๊ธฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ์Šคํฌ๋กค๋ทฐ์— ์ปค์Šคํ…€ํ•œ UIView๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ xib๋กœ ๋”ฐ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์„œ ๋งŒ๋“ค๊ณ  ์ ์šฉํ–ˆ๋Š”๋ฐ์š”. ์ด ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋†“๊ณ  ๊ณต์œ ํ•ด๋“œ๋ฆฌ๊ณ  ์‹ถ์–ด์„œ ๊ธ€์„ ์ ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview ์ œ๊ฐ€ ๋งŒ๋“ค๊ณ ์‹ถ์€ ํ™”๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ScrollVIew ์œ„์— ์ปค์Šคํ…€ํ•œ UIView๋ฅผ ์–น์–ด์„œ ์Šคํฌ๋กค์ด ์ขŒ์šฐ๋กœ ๋˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. UIView์—๋Š” ํ…Œ์ด๋ธ”๋ทฐ์™€ ์ปฌ๋ ‰์…˜๋ทฐ๋„ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € WeatherView๋ผ๋Š” UIView Swift ํŒŒ์ผ๊ณผ xib ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. xib ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฒ•์€ new File์—์„œ User Interface์—์„œ View๋ฅผ ๊ณจ๋ผ์ฃผ์‹œ๊ณ  ์ƒ์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Xib xibํŒŒ์ผ์—์„œ ์›ํ•˜์‹œ๋Š” ๋ ˆ์ด์•„์›ƒ์„ .. 2021. 2. 18.
[iOS/UI] Swift ์Šคํฌ๋กค๋ทฐ๋กœ ์ด๋ฏธ์ง€ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋„˜๊ธฐ๊ธฐ(Image Paging with UIScrollView) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ์˜ค๋Š˜์€ ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊ฑด๋ฐ์š”. ํ‰์†Œ์—๋Š” ์ปฌ๋ ‰์…˜๋ทฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ํŽ˜์ด์ง•์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์Šคํฌ๋กค๋ทฐ๋กœ ํ•˜๋Š”๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•œ๊ฑฐ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Storyboard ๋จผ์ € ๋‹ค์Œ๊ณผ ๊ฐ™์ด scrollView ์„ธํŒ…ํ•˜๊ณ  ์Šคํฌ๋กค๋ทฐ ์•„๋ž˜์ชฝ์— pageControl๋„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”! PageControl์€ ์Šคํฌ๋กค๋ทฐ ๋ฐ”๊นฅ์ชฝ์— ์œ„์น˜ํ•˜๊ฒŒ ์„ธํŒ…ํ•ด์ฃผ์„ธ์š”! ๊ทธ๋ฆฌ๊ณค ์Šคํฌ๋กค๋ทฐ๋ฅผ ํด๋ฆญํ•˜์…”์„œ Scrolling - Paging Enabled๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”. ViewController ์ด์ œ ViewController๋กœ ์ด๋™ํ•˜์…”์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์„ค์ •ํ•ด์ฃผ์—ˆ๋˜ ์Šคํฌ๋กค๋ทฐ์™€ ํŽ˜์ด์ง€์ปจํŠธ๋กค์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค! @IBOutlet wea.. 2021. 2. 17.
[iOS/UI] ํ‚ค๋ณด๋“œ ์œ„์— ๋ฒ„ํŠผ๋‹ฌ๊ธฐ(add custom buttons above Keyboard) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ํ‚ค๋ณด๋“œ ์ž…๋ ฅํ• ๋•Œ ํ‚ค๋ณด๋“œ๋ฅผ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ํ• ๋•Œ ํ‚ค๋ณด๋“œ ์œ„์— done๋ฒ„ํŠผ์ด๋‚˜ ์•„๋‹ˆ๋ฉด ํ‚ค๋ณด๋“œ ์•„๋ž˜์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋ณด๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด์„œ ๋ฒ„ํŠผ์ด ํ‚ค๋ณด๋“œ ์œ„๋กœ ๋”ฐ๋ผ์˜ค๋Š” ๋“ฏํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ ๋ฐ”๋กœ ์˜ค๋Š˜์€ ํ‚ค๋ณด๋“œ ์œ„์— ์ด์ „๊ณผ ๋‹ค์Œ ๋ฒ„ํŠผ์„ ๋„ฃ์–ด๋ณผ๊ฑฐ์—์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~Storyboard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ํ…์ŠคํŠธํ•„๋“œ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ViewController ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. ๋ฐ”๋กœ UIToolbar๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ์š”. ์ด์ œ ์—ฌ๊ธฐ์— ๋„ฃ์–ด์ค„ ๋ฒ„ํŠผ๋“ค์ด ํ•„์š”ํ•˜๊ฒ ์ฃ ? ๋ฐ”๋กœ ์ด์ „๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๋ฒ„ํŠผ๋„ ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์ด๋ ‡๊ฒŒ ๋ฒ„ํŠผ์„ ๋งŒ๋“œ์…จ์œผ๋ฉด ๋ฐ”๋กœ ํˆด๋ฐ”์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š๋ƒ? ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํˆด๋ฐ”์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ๋“ค์€ UIBarButtonItem๋งŒ .. 2021. 1. 22.
[iOS/UI] UILabel ๊ธ€์ž์ˆ˜์— ๋”ฐ๋ผ์„œ ํฐํŠธํฌ๊ธฐ ์ž๋™์œผ๋กœ ๋งž์ถ”๊ธฐ (Minimum Font Scale) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๊ธ€์ž์ˆ˜์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ํฐํŠธํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•ด๋“œ๋ฆด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ™์€ ํฌ๊ธฐ ์•ˆ์— ๊ธ€์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด (์Šคํฌ๋กค๋˜์ง€์•Š๊ณ ) ํฐํŠธํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ๋ชจ๋“  ๊ธ€์ž๊ฐ€ ๋ณด์ด๋„๋ก ํ•ด์•ผํ• ํ…๋ฐ์š”. StoryBoard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์…”์„œ ์•„๋ž˜ ๋ณด์ด๋Š” Autoshrink๋ฅผ ํƒญํ•˜์‹œ๋ฉด minimum Font Scale๊ณผ minimum Font Size๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ minimum Font Scale์„ ๊ณจ๋ผ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธ€์ด ์ ์„๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ฒŒ ๊ธ€์ด ์•„์ฃผ ๊ธธ๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๊ฒŒ ์กฐ์ •๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!! 2020. 12. 14.
[iOS/UI]ํƒญ๋ฐ” ์•„์ดํ…œ ๋ˆŒ๋ €์„ ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„ฃ๊ธฐ (UITabBarItem Animation) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!!! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฑด ํƒญ๋ฐ”๋ฅผ ํƒญํ–ˆ์„ ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ์Šคํ”„๋ง์ฒ˜๋Ÿผ ์ปค์กŒ๋‹ค ์ž‘์•„์กŒ๋‹คํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•ด๋ณผ๊ฑฐ์—์š”. ๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Xcode ์šฐ์„  ํƒญ๋ฐ” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. override๋œ didSelect(ํƒญ๋ฐ”์•„์ดํ…œ ์„ ํƒํ–ˆ์„์‹œ) ๋ฉ”์†Œ๋“œ๋ฅผ ์จ์ค๋‹ˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์•ˆ์— ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.(์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์ฝ”๋“œ) ๊ทธ ๋‹ค์Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•ด์ค๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ didSelectํ–ˆ์„ ๋•Œ performSpringAnimationํ•จ์ˆ˜์— imageView๋ฅผ ์ธ์ž๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ค€ ๋’ค ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค. StoryBoard ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•˜์…”์„œ ํƒญ๋ฐ”์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ ์•„์ดํ…œ์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. (์ €๋ ‡๊ฒŒ ์›๋ณธ ๊ทธ๋Œ€๋กœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜์‹œ๊ณ  ์‹ถ์œผ๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”) ๋ฐ˜.. 2020. 10. 28.
[iOS/UI]๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฏธ์ง€๋ทฐ์— ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ(Image Literal) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Image Literal์ด๋ž€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฏธ์ง€๋ทฐ์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! ๋จผ์ € ํ‰์†Œ์—๋Š” ์ด๋ฏธ์ง€๋ทฐ์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์„ ๋•Œ ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์„ ๊ธฐ์–ตํ•˜์—ฌ์„œ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋ฉด ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์„ ์ผ์ผ์ด ์•Œ์•„์•ผํ•˜๊ณ  ๋„ฃ๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์› ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ด๋ฏธ์ง€ ์ž์ฒด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ ์ด๋ฏธ์ง€ ๋ฆฌํ„ฐ๋Ÿด์ด๋ž€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Image Literal์ด๋ผ๊ณ  ์นœ ๋‹ค์Œ ์‚ฌ์ง„ ์•„์ด์ฝ˜์ด ๋œจ๋Š”๋ฐ ๊ทธ๊ฒƒ์„ ๋”๋ธ”ํด๋ฆญํ•œ ๋‹ค์Œ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ค‘ ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.! ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค! 2020. 10. 27.
[iOS/UI]์Šคํฌ๋กค๋ทฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ(Simple Use UIScrollView) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ด๋ฒˆ์— ์•Œ์•„๋ณผ ๊ฑด ์Šคํฌ๋กค๋ทฐ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ ์šฉํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๋€ Content Layout Guide ์™€ Frame Layout Guide๋ฅผ ๊ณ ๋ คํ•˜๋‹ˆ ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ๋–ด์Šต๋‹ˆ๋‹ค ใ…œ ๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ•์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Constraints๋ฅผ ๋ชจ๋‘ 0์œผ๋กœ ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋นจ๊ฐ„์ƒ‰ ์ค„์ด ๋œจ๋Š”๋ฐ์š” ๋‹นํ™ฉํ•˜์ง€ ๋ง๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณค ์ธ๋””์ผ€์ดํ„ฐ ์ธ์ŠคํŽ™ํ„ฐ๋กœ ๊ฐ€์„œ ๋…ธ๋ž€๋ถ€๋ถ„์œผ๋กœ ํ‘œ์‹œ๋œ Content Layout Guides์˜ ์ฒดํฌ๋ฅผ ํ’€์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์•„์ฃผ ํŽธ์•ˆ(?)ํ•˜๊ฒŒ ํŒŒ๋ž€์ƒ‰ ์ค„๋กœ ๋ณ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ทฐ๋ฅผ ์ปจํ…ํŠธ๋ฅผ ๋‹ด๋‹นํ•  ๋ทฐ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ๋ทฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Contraints๋ฅผ Scro.. 2020. 10. 27.
[iOS/UI] ํ…Œ์ด๋ธ”๋ทฐ ํŠน์ • ์ธ๋ฑ์Šค๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ธฐ(UITableView scrollToRow) ์•ˆ๋…•ํ•˜์„ธ์š” Foma์ž…๋‹ˆ๋‹ค !! ์˜ค๋Š˜์€ ํ…Œ์ด๋ธ”๋ทฐ์—์„œ ํŠน์ • ์ธ๋ฑ์Šค ์œ„์น˜๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ํ…Œ์ด๋ธ”๋ทฐ์— ์ด๋™ํ• ๋•Œ ๋ฐ”๋กœ ๋ช‡๋ฒˆ์งธ section ๋˜๋Š” row์ธ ์…€์ด ๋–ด์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•œ ๊ฒฐ๊ณผ UITableView์— scrollToRow ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ์Šคํฌ๋กค๋ง์ด ๋˜๋ฉด์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ! ๋จผ์ € ํ…Œ์ด๋ธ”๋ทฐ์™€ ํ…Œ์ด๋ธ”๋ทฐ์…€๊ณผ ๊ทธ ์•ˆ์— ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋ ˆ์ด๋ธ” ์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•  ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด ํ…Œ์ด๋ธ”๋ทฐ์˜ row ๊ฐฏ์ˆ˜์™€ row์˜ ์…€์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•˜๋„๋ก ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด indexPath ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์–ด ์›ํ•˜๋Š” row๋ฅผ ์ ์–ด์ฃผ๊ณ  ์•„๋ž˜ ํ˜„์žฌ ํ…Œ์ด๋ธ”๋ทฐ์— scrollT.. 2020. 9. 14.
[iOS/UI] ์„œ์น˜๋ฐ” ์ปค์Šคํ…€ํ•˜๊ธฐ (Custom UISearchBar) ์•ˆ๋…•ํ•˜์„ธ์š”! Foma์ž…๋‹ˆ๋‹ค! ์ด๋ฒˆ์—๋Š” ์„œ์น˜๋ฐ”์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณผ๊ฑด๋ฐ์š”. ๊ฐ€๋” ์„œ์น˜๋ฐ”์˜ ๋ฐฐ๊ฒฝ์ƒ‰์ด๋‚˜ ๋‹๋ณด๊ธฐ์ด๋ฏธ์ง€ ๋“ฑ์„ ๋ฐ”๊พธ๊ณ ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•ด๋ณธ ๊ฒฐ๊ณผ 1.์„œ์น˜๋ฐ”์˜ ํ”Œ๋ ˆ์ด์Šคํ™€๋”(๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ํšŒ์ƒ‰๊ธ€์”จ๋กœ ๋– ์žˆ๋Š”๊ฒƒ) ์„ธํŒ… 2.์„œ์น˜๋ฐ”์˜ ์™ผ์ชฝ ๋‹๋ณด๊ธฐ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ์„ธํŒ… 3.์„œ์น˜๋ฐ”์˜ ์˜ค๋ฅธ์ชฝ ์—‘์Šค๋ฒ„ํŠผ ์ด๋ฏธ์ง€ ์„ธํŒ…(๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ) 4.์„œ์น˜๋ฐ”๋ฅผ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์— ๋„ฃ๋Š”๋ฒ• 5.์„œ์น˜๋ฐ”์˜ ๋ฐฐ๊ฒฝํ™”๋ฉด,๊ธ€์”จ์ƒ‰,ํ”Œ๋ ˆ์ด์Šคํ™€๋”์ƒ‰ ์„ธํŒ… 6.์„œ์น˜๋ฐ” ์™ผ์ชฝ,์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ ํ‹ดํŠธ์ƒ‰ ์„ธํŒ… ์ด๋ ‡๊ฒŒ ์ปค์Šคํ…€ํ•˜๋Š” ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐ€์žฅ ๋จผ์ € ํ•ด์ฃผ์–ด์•ผํ•  ๊ฒƒ์€ searchbar๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. = > let searchBar = UISearchBar() 1.ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์„ค์ •๋ฒ•์€ searchBar์— .placeholder๋ฅผ.. 2020. 9. 2.
728x90
๋ฐ˜์‘ํ˜•