๋ฐ˜์‘ํ˜•

iOS/Swift 46

[Swift] ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ ๋ฐ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ์ •๋ฆฌํ•ด ๋‘๊ณ  ๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ• - string.index(string.startIndex, offsetBy: number)๋ฅผ ํ™œ์šฉํ•˜๊ธฐ - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ range๋ฅผ ์กฐ์ •ํ•ด ์ž๋ฅธ ๋ฌธ์ž์—ด์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. var myString = "Hello, world!" let startIndex = myString.index(myString.startIndex, offsetBy: 0) let endIndex = myString.index(myString.startIndex, offsetBy: 5) let output = myString[startIndex ..< endIndex..

iOS/Swift 2022.11.12

[Swift] UITextField์—์„œ Placeholder์˜ ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UITextField์˜ Placeholder์˜ ํ…์ŠคํŠธ ์ปฌ๋Ÿฌ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) TextField์— ์ ‘๊ทผํ•˜์—ฌ placeholder์˜ ํ…์ŠคํŠธ ์ปฌ๋Ÿฌ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 1. ํ…์ŠคํŠธ ํ•„๋“œ ์„ ์–ธ private let myTextField: UITextField = UITextField() 2. ํ…์ŠคํŠธ ํ•„๋“œ์˜ attributedPlaceholder ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ ๋ฐ ์›ํ•˜๋Š” ์ปฌ๋Ÿฌ๋กœ ์„ค์ • myTextField.attributedPlaceholder = NSAttributedString(string: "๋‚˜์˜ ์ปฌ๋Ÿฌ๋Š” ํŠน๋ณ„ํ•˜์ง€", attributes: [NSAttributedString...

iOS/Swift 2022.11.10

[Swift] WebView์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ปฌ๋Ÿฌ๋ฅผ Clear๋กœ ๋ณ€๊ฒฝ & Content Size ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ WebView์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ปฌ๋Ÿฌ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ Content Size๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) 1. WebView์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ปฌ๋Ÿฌ๋ฅผ Clear๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• webView์— ์ ‘๊ทผํ•ด backgroundColor๋ฅผ clear๋กœ ์กฐ์ •ํ•˜๋”๋ผ๋„ white๋กœ ๋ณด์ด๊ธธ๋ž˜ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ค ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. webView.isOpaque = false webView.backgroundColor = .clear ์œ„์™€ ๊ฐ™์ด isOpaque์˜ ๊ฐ’์„ false๋กœ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์›ํ•˜๋Š” ๋Œ€๋กœ clear๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 2. WebView์˜ ์ฝ˜ํ…์ธ ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ๋ฐฉ๋ฒ• webView์˜ ๋กœ๋“œ๊ฐ€ ๋๋‚˜๊ณ  ๋‚˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด d..

iOS/Swift 2022.11.09

[ Swift ] UITableViewCell์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ๋งค๋ฒˆ ๊นŒ๋จน๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์ฐพ๊ฒŒ ๋˜๋Š” UITableViewCell์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) 1. Layoutsubviews - ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” UIView๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋กœ์„œ ํ•˜์œ„ ๋ทฐ๋“ค์˜ ์ •ํ™•ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ override ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ TableViewCell์˜ ContentView์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜์ •ํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 2. ๋ฐฉ๋ฒ• - ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ TableViewCell ์•ˆ์—๋Š” ContentView๋ผ๋Š” UIView๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด๊ณณ์— ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋‚˜ ํ…์ŠคํŠธ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ Custom ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด layoutSubviews ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ContentView์˜ ์œ„์น˜๋ฅผ..

iOS/Swift 2022.09.21

[ Swift ] UIProgressView์—์„œ CornerRadius๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UIProgressView์—์„œ TrackView์™€ Progress์˜ ConerRadius๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ์ผ๋‹จ ProgressView๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Subviews๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•˜ ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [, ] ๋‘ ๊ฐœ์˜ ImageView๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ๋Š” TrackView, ๋‘ ๋ฒˆ์งธ๋Š” ์•ˆ์ชฝ์˜ Progress์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. 1. ๊ธฐ๋ณธ์ ์ธ ProgressView์˜ ๋ชจ์Šต - ProgressView์˜ TrackView์™€ Progress์˜ ์ปฌ๋Ÿฌ๋งŒ ์ •ํ•ด์ค€ ๊ฒฝ์šฐ progressView.trackTintColor = UIColor.lightGray progressView.progressTintColor = UIColor.red pr..

iOS/Swift 2022.09.20

[ Swift ] UITextField์˜ ์ขŒ์šฐ ํŒจ๋”ฉ์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UITextField์˜ ์ขŒ์šฐ ํŒจ๋”ฉ์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. UITextField์— cornerRadius๋ฅผ ์ฃผ๊ณ  ํ™•์ธํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปค์„œ๊ฐ€ ๊ณต๊ฐ„ ์—†์ด ๋ฐ”๋กœ ์•ž์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• Apple Developer Documentation developer.apple.com Apple์—์„œ์˜ ์˜๋„๋Š” ์ขŒ์ธก์ด๋‚˜ ์šฐ์ธก์— ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ component๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ Overlay ๋ทฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์€ ๋‹ค์Œ ํ”„๋กœํผํ‹ฐ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 1. leftView 2. rightView ์ด๋ฅผ width๋ฅผ ๊ฐ€์ง„ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ์— ๋„ฃ์–ด ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. func setUserInfoTextField() ..

iOS/Swift 2022.09.19

[ Swift ] UIStackView์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UIStackView์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) UIStackView UIStackView๋Š” ์„œ๋ธŒ ๋ทฐ๋“ค์„ ์Œ“์•„์„œ ๋™์ ์œผ๋กœ ๋‚ด๋ถ€ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  UIView์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. Axis - ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ์„œ๋ธŒ ๋ทฐ๋“ค์„ ๋†“์„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - Horizontal ํ˜น์€ Vertical๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. Spacing - ๊ฐ ์„œ๋ธŒ๋ทฐ๋“ค์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 3. Alignment - ์„œ๋ธŒ ๋ทฐ๋“ค์˜ ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. - ๊ธฐ์กด์— ์ •ํ•ด๋‘์—ˆ๋˜ Axis์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. (1) Horizontal Fill: StackView์˜ ๋†’์ด๋งŒํผ ์„œ๋ธŒ ๋ทฐ๋“ค์˜ ๋†’์ด๊ฐ€..

iOS/Swift 2022.09.18

[ Swift ] ๊ฐ„๋‹จํ•œ ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ (feat.UILabel)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์ •๋ง ์˜ค๋ž˜๊ฐ„๋งŒ์— ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) 1. UILabel ์ปค์Šคํ…€ํ•˜๊ธฐ drawText(in:)์€ Label์˜ text๊ฐ€ ๊ทธ๋ ค์งˆ ๋•Œ rect์— ๊ด€ํ•œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋กœ Override ํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, drawText(in:)์—์„œ padding๊ฐ’์„ ์„ค์ •ํ•˜์‹œ๊ฒŒ ๋˜๋ฉด ๋ฌธ์ž์™€ Label ์‚ฌ์ด์— ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ณ  ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. final class ToastLabel: UILabel { // ์ƒํ•˜์ขŒ์šฐ์˜ ์–ผ๋งˆ์˜ ํŒจ๋”ฉ๊ฐ’์„ ์ค„์ง€ UIEdgeInsets ๋ณ€์ˆ˜ ์ƒ์„ฑ private var padding = UIEdgeInsets(top: 8.0, left: 8.0, bottom: ..

iOS/Swift 2022.09.16

[ Swift ] Realm์—์„œ ๋ฐฐ์—ด์‚ฌ์šฉํ•˜๊ธฐ ( feat.List )

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Realm์—์„œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) Realm์—์„œ์˜ ๋ฐฐ์—ด ์‚ฌ์šฉ Realm์—์„œ๋Š” Swift์˜ Array๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ Realm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ธ List๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ ๋‚˜์ด ๊ทธ๋ฆฌ๊ณ  ์ข‹์•„ํ•˜๋Š” ์Œ์‹๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” '์นœ๊ตฌ'๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ, ์Œ์‹ ๋ชจ๋ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. class Food: Object { @Persisted var name: String convenience init(name: String) { self.init() self.name = name } } ์ด ์Œ์‹ ๋ชจ๋ธ์„ ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๋กœ ๊ฐ–๊ณ  ์žˆ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์„œ ๋งํ•œ ..

iOS/Swift 2022.06.28

[ Swift ] ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•ด๋ณด์ž ( UITextField, UITextView )

์•ˆ๋…•ํ•˜์„ธ์š” ~ ์˜ค๋Š˜์€ ์ •๊ทœ์‹์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ๊ณผ ๊ฐ™์ด ํŠน์ •ํ•œ ๊ทœ์น™์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ž…๋ ฅ์ด ์กด์žฌํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ ํ•„์š”ํ•œ ๊ฒŒ ๋ฐ”๋กœ ์ •๊ทœ์‹์ž…๋‹ˆ๋‹ค. ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ •๊ทœ์‹์„ ์ ์–ด๋ณด๋ฉด์„œ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ์‹ ๊ฐ€์žฅ ๋จผ์ € ํŠน์ •ํ•œ ์กฐ๊ฑด(์—ฌ๊ธฐ์„œ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ๋ฐฉ์ง€)์„ ํ†ตํ•ด Bool ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. func isCorrect() -> Bool { do{ let regex = try NSRegularExpression(pattern: "^[a-zA-Z๊ฐ€-ํžฃใ„ฑ-ใ…Žใ…-ใ…ฃ\\s]$", options: .caseInsensitive) if let _ = regex.firstMatch(in: self, options: NS..

iOS/Swift 2022.06.27
๋ฐ˜์‘ํ˜•