์ดํ์ ์คํํ ๋ ํน์ ๋ฒ์ ๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ๋ก ์๊ตฌํ๋ฉฐ ์ฑ์คํ ์ด๋ก ํ์ด์ง๋ฅผ ๋์ฐ๋๋ก ํ๋ ์์ ๊ตฌํ์ค ์๊ธด ๋ฌธ์ ์ ๋๋ค. ์ฒ์์ ๋ฒ์ ์ String ๋ฌธ์์ด์ ๋น๊ต ์ฐ์ฐ์๋ฅผ ํตํด ์์ ์ ํตํด ์ดํ ์ต์ ๋ฒ์ ๋ณด๋ค ๋์์ง ํ๋จํ์์ต๋๋ค. ๋ง์ฝ ํ์ฌ ์ดํ ๋ฒ์ ์ด 1.0.9์ดํ ์ต์ ๋ฒ์ 1.0.6 ์ผ ๊ฒฝ์ฐ "1.0.9" > "1.0.6" // true์ด๋ฌ๋ฉด ํ์ฌ ๋ฒ์ ์ด ์ดํ ์ต์๋ฒ์ ๋ณด๋ค ๋๋ค๊ณ ํ๋จ๋์ด ์ ๋ฐ์ดํธ ํ์ง ์์๋ ๋ฉ๋๋ค. ํ์ง๋ง ๋ง์ฝ ํ์ฌ ์ดํ ๋ฒ์ ์ด "1.0.10" ์ผ ๊ฒฝ์ฐ"1.0.10" > "1.0.6" // false ์ด๋ฐ์์ผ๋ก false ๊ฐ ๋๋ฏ๋ก ์ฑ์คํ ์ด๋ก ์ฐ๊ฒฐํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด์'Compare' ๋ผ๋ String ๋ด๋ถ์ method๋ฅผ ์ฌ์ฉํ ์ ..
์ฑ์คํ ์ด ๋ฐ๋ก๊ฐ๊ธฐ ๋ง์๋ณด๊ธฐ ๋ง์๋ณด๊ธฐ์ ๊ธฐ๋ฅ์ ์๊ฐํ ๊ฒ์. - ์ค๋ ๊ฐ์ ์ ์ด๋ฆ ๋ถ์ด๊ธฐ 116๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค๋ณด์์. - ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํด์. - ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋ apps.apple.com ์ดํ '๋ง์๋ณด๊ธฐ' ์ ๋๋ค ์ผ๊ธฐ๋ฅผ ์ฐ๋ฉด์ ์ค๋ ํ๋ฃจ ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณด์ธ์ ๐ '๋ง์๋ณด๊ธฐ' ์ดํ ๊ธฐ๋ฅ์ ๋๋ค. - ์ค๋ ๊ฐ์ ์ ์ด๋ฆ ๋ถ์ด๊ธฐ 116๊ฐ์ ๊ฐ์ ์ด๋ฅผ ํตํด ๋ด ๋ง์์ ๋ค์ฌ๋ค ๋ณผ ์ ์์ต๋๋ค - ๊ฐ์ ์ด๋ก ๊ธฐ๋กํ๋ ํ๋ฃจ ์ค๋์ ๊ฐ์ ์ผ๋ก ํ๋ฃจ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค - ์บ๋ฆฐ๋๋ก ๋ชจ์๋ณด๋ ๋ง์ (์บ๋ฆฐ๋) ๋งค๋ฌ ๋ด ๋ง์์ ์ด๋ ๋์ง ์บ๋ฆฐ๋๋ก ๋ชจ์ ๋ณผ ์ ์์ต๋๋ค - ์ง๋ ๋ง์ ์ดํด๋ณด๊ธฐ (ํต๊ณ) ๊ฐ์ ๊ทธ๋ํ๋ฅผ ํตํด ์ง๋ ๋ง์์ ์ ๋ฆฌํ ์ ์์ต๋๋ค
๋จผ์ ํ๊ฐ ์ค์ ์ ๋๋ค. // ํ๊ฐ extension UILabel { func setLineSpacing(ratio: Double) { let style = NSMutableParagraphStyle() let lineheight = self.font.pointSize * ratio //font size * multiple style.minimumLineHeight = lineheight style.maximumLineHeight = lineheight self.attributedText = NSAttributedString( string: self.text ?? "", attributes: [ .paragraphStyle: style ]) } } extension UILabel { func setLin..
UI๋ฅผ code๋ก ๊ตฌํํ๋ค๋ณด๋ฉด ์ง์ ๋ถํด์ง ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฒ์ ๋ค์ ์์์๋๋ฐ ์ฌํํธ + ์ต์ + ์ปค๋งจ๋ + ๋ฐฉํฅํค(์ข,์ฐ) ๋ก ํ๋ฒ์ ๋ค ํผ์น๊ฑฐ๋ ๋ค ์ ์ ์ ์์ต๋๋ค ํ๋๋ง ์ ๊ณ ์ถ์ผ๋ฉด ์ฌํํธ๋ฅผ ๋นผ๋ณด์ธ์ ๊ทธ ์ธ ํ๋ฒ์ ์ฌ๋ฌ์ค ์์ ์ ๋ ฅํ๊ธฐ ์ปจํธ๋กค + ์ฌํํธ + ๋ฐฉํฅํค(์๋, ์) ํด๋น ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ ์ปจํธ๋กค + ์ปค๋งจ๋ + e ์๋ ์ฝ์์ฐฝ ํผ์น๊ธฐ ์ปค๋งจ๋ + ์ฌํํธ + Y ์ฐ์ธก ํ๋ก์ ํธ ํ์์์ญ ์ปค๋งจ๋ + 0 ์ข์ธก ์์ฑ ์์ญ ์ปค๋งจ๋ + ์ต์ + 0 ์ถ๊ฐ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ์ฝ๋ ๋จ์ถํค๋ก ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค https://ggasoon2.tistory.com/7 ์ด๋ฐ์์ผ๋ก code snippet์ผ๋ก ๋ฑ๋กํด๋๋ฉด uitf๋ง ์ณ๋ ์ ์ฝ๋๊ฐ ๋์จ๋ต๋๋ค ์ ๋ 30๊ฐ ์กฐ๊ธ ๋๊ฒ ๋ฑ๋กํด๋๋ค์ ์ด๋ฐ์์ผ๋ก ์์ฃผ ์ฐ..
Coordinator ํจํด์ ๋ง๋ ์ฌ๋์ด ์์ฑํ ์ ์ ์ด์ ์ ๊ฐ๋ ์๊ฐ ์ ๋๋ค. https://khanlou.com/2015/01/the-coordinator/ ์ฐ์์ด๋ ์ฝ๋๋ฅผ ๋ณด๊ธฐ์ ์์ ์ด๋ค ๊ฐ๋ (์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ค๊ณ )์ผ๋ก ๋ง๋ค์๋์ง ์ค๋ช ๋์ด ์๋ค์ Coordinator ํจํด์ด๋ ์ฌ๋ฌ VC๊ฐ Navigation์ ์ด๋์ด๋ ๋ฐ์ดํฐ, ์ด๋ฒคํธ์ ์ ๋ฌ์ ๊น๋ํ๊ณ ๋ถ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ VC๋ Coordinator ์ ์ฐ๊ฒฐ๋์ด์์ต๋๋ค. ๊ทธ๋์ Coordinator๋ฅผ VC๊ฐ ์ค์ฌ์ ์ญํ ์ ํ๊ณ present์ dismiss๋ฅผ ์ ์ดํ๋ ์ญํ (ํ๋กํ ์ฝ)๋ก ๋ด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค ๊ฐ๋จํ ์์์ ๋๋ค. (์ 3๊ฐ์ง๋ฅผ ์ ์ฉ) Home VC์์ ํญํ์๋ Detail VC๋ก ๋์ด๊ฐ๋ ํ๋ฉด์ ํ์ Coordi..
์ฐ์ Launch Screen์๋ custom class, custom UI ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (์ค์ง Storyboard + ๊ธฐ๋ณธ UI Component๋ง ์ฌ์ฉ ๊ฐ๋ฅ) ๊ทธ๋์ Launch Screen์ Gif(Custom Class)๋ ๋ฃ์ ์ ์๊ณ ๋์ ์ด๋ฐ์์ผ๋ก Launch Screen ์ดํ Custom Splash VC๋ฅผ ์ถ๊ฐํ์ฌ gif๋ฅผ 1 ~ 2์ด ์ฌ์ํ ๋ค Main VC๋ก ๊ฐ๋ ๋ฐฉ๋ฒ์ ์ ํํ ์ ์์ต๋๋ค. SceneDelegate์์ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let _ = (sce..
์ ์ฌ์ง ๊ฐ์ drop down ์ฒ๋ผ ๋ถ๋ชจ๋ทฐ์ ํ๋ ์์ ํ์์ด๊ณ ์์๋ทฐ๋ ์ด๋ก์ ์์ญ์ผ ๋ ๋ถ๋ชจ๋ทฐ์ ์์ญ์ธ (3)์ ์์๋ทฐ๋ ํฐ์น๊ฐ ๋๋๋ฐ (4)๋ ๋ถ๋ชจ์ ์์ญ ๋ฐ์ด๋ผ ํฐ์น๊ฐ ์๋ฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ทฐ ์์ฒด์์ ํฐ์น๋ฅผ ๊ฐ์งํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. class CustomUIView: UIView { override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { if !self.clipsToBounds && !self.isHidden && self.alpha > 0.0 { let subviews = self.subviews.reversed() for member in subviews { let subPoi..
๋ชฉ๋ก ์ฝ๋ AudioEngine setCategory, setMode - ์ค๋์ค ์์ง ์ ์ ์ฝ๋ ์์ฑ๊ฐ AVAudioSession.Category - ์ ์ถ๋ ฅ์ ์ด AVAudioSession.CategoryOptions - ๊ถํ์ฌ๋ถ AVAudioSession.Mode - ์ ๋ ฅ ๋ชจ๋์ ์ข ๋ฅ, ์ถ๋ ฅ ๋ชจ๋์ ์ข ๋ฅ AVAudioSession.Port - ์ ์ถ๋ ฅ ์ฅ์น ์ค๋์ค ์ ์ ์ฝ๋ Audio Engine setCategory, setMode - ์ค๋์ค ์์ง ์ ์ let audioSession = AVAudioSession.sharedInstance() do { try audioSession.setCategory(.playAndRecord, options: .allowBluetooth) try audioSessio..
1. ํฐ๋ฏธ๋์ ์ด ์ฝ๋๋ฅผ ์ณ์ ๋น๋ ์๊ฐ์ ์ธก์ ํ ์ ์๋ค. defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES ๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์๊ฐ์ด ๋ธ 2. ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ (e.g. 100ms์ด์) code line ์ warning์ ๋์ธ ์ ์๋ค. ๋น๋์ ํ Other Swift Flags ์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค๋๋ค -Xfrontend -warn-long-function-bodies=100 -Xfrontend -warn-long-expression-type-checking=100 ์ด๋ฐ์์ผ๋ก ์๊ฐ์ด ๋ธ (11826ms) 3. init ํ์ ๋ช ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด UIColor๋ฅผ init์ผ๋ก ํ์๋๋ฐ ์ด๋ฌ๋ฉด ์๊ฐ์ด ๊ต์ฅํ ์์๋จ initํ ๋ initํ..
๋ ํผ๋ฐ์ค raywenderlich tutorial, ์ ํ ๊ณต์๋ฌธ์ https://www.kodeco.com/632-ibeacon-tutorial-with-ios-and-swift https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon_device iBeacon์ด ์ ๊ณตํ๋ ์ ๋ณด iBeacon๋ UUID, major, minor์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์. iBeacon ์๋ณ 1. iBeacon์ ์ฌ์ฉํ๊ธฐ์ํด์ iBeacon์ UUID๋ฅผ Client์์ ์๊ณ ์์ด์ผํ๋ค. (๋ชจ๋ฅด๋ฉด ์..
- Total
- Today
- Yesterday
- xcode code snippet
- fast build xcode
- swift line spacing
- swift touch outside parentView
- swift fast build
- ios ๊ฐ์ update
- xcode ์ฌ๋ฌ์ค ํธ์ง
- reduce xcode build time
- swift textview ํ๊ฐ
- swift ์ฑ ์ ๋ฐ์ดํธ
- swift ์๊ฐ
- xcode mark ํ
- xcode code ๋จ์ถ
- xcode ui code ์ง์ ๋ถ
- swift ๋ถ๋ชจ๋ทฐ ์ธ๋ถ์์ญ ํฐ์น
- xcode ํ๋ฒ์ ์ฌ๋ฌ์ค ํธ์ง
- xcode ui code dirty
- swift ํ๊ฐ extension
- swift ๊ฐ์ ์ ๋ฐ์ดํธ
- swift textview ์๊ฐ
- swift uilabel ํ๊ฐ
- swift line spacing extension
- swift uilabel ์๊ฐ
- swift code snippet
- swift ์๊ฐ Extension
- xcode ๋จ์ถํค ๊ฟํ
- xcode ํจ์ ์ ๊ธฐ
- xcode ํจ์ ํ๋ฒ์ ์ ๊ธฐ
- swift ํ๊ฐ
- ios ์ฑ ์ ๋ฐ์ดํธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |