UITextField Tips
Add a top Line on Keyboard
1 2 3 4 5 6 7 8
| extension UITextField { func addTopLineOnKeyboard() { let line = UIView(frame: CGRect(x: 0, y: 0, width: 2000, height: 0.5)) line.backgroundColor = "979797".color
inputAccessoryView = line } }
|
Only allow a price number with exactly two decimals
1 2 3 4 5 6 7 8
| func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let str = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let regex = "^([1-9]\\d{0,7}|0)(\\.\\d{0,2})?$|^$" let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
return predicate.evaluate(with: str) }
|
Only allow 1-100 or leave blank
1 2 3 4 5 6 7 8 9 10
| func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let str = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let regex = "^[1-9]?\\d|100|[1-9]?$" let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
return predicate.evaluate(with: str) }
|
UILabel Tips
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| extension String { var phoneNumberFormatter: String { get { var s = self.replacingOccurrences(of: " ", with: "") let count = s.characters.count if count > 7 { s.insert(" ", at: s.index(s.startIndex, offsetBy: 3)) s.insert(" ", at: s.index(s.startIndex, offsetBy: 8)) } else if count > 3 { s.insert(" ", at: s.index(s.startIndex, offsetBy: 3)) } return s } } }
|
Highlight UILabel’s substring by given string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var userInputPhoneNumber = "123"
@IBOutlet private weak var phoneLabel: UILabel!
var phoneNumber: String = "123456789" { didSet { let atrStr = NSMutableAttributedString(string: phoneNumber.phoneNumberFormatter)
let font = UIFont.systemFont(ofSize: 14) let range = (phoneNumber.phoneNumberFormatter as NSString).range(of: userInputPhoneNumber.phoneNumberFormatter)
if range.location == 0 { atrStr.addAttributes([NSFontAttributeName : font, NSForegroundColorAttributeName: UIColor.red], range: (phoneNumber.phoneNumberFormatter as NSString).range(of: userInputPhoneNumber.phoneNumberFormatter)) }
phoneLabel.attributedText = atrStr } }
|
Translated by gpt-3.5-turbo