【发布时间】:2018-12-07 08:32:22
【问题描述】:
(Xcode10.1 ,Swift, iOS 11&12)
问题:如何增加 UITextField 中插入符号/光标的高度
到目前为止我所做的尝试:
我已经这样做了,问题解决了。
class BPTextField: UITextField {
override func caretRect(for position: UITextPosition) -> CGRect {
//CGRect rect = [super caretRectForPosition:position];
var rect = super.caretRect(for: position)
let h = self.frame.height - 5
let y_ = (self.frame.height - h)/2
rect.origin.y = y_
rect.size.height = h;
return rect;
}
}
但是,当我更改键盘语言(从英文-印度到日文-假名)并键入单个字符时,插入符号/光标在 TextField 中移动到上方。
请帮帮我
我浏览了这些链接,
How to make the height of the cursor same with the height of text in UITextField?
UITextView lineSpacing make cursor height not same
编辑
我正在使用YYText 库,我将这个BPTextField 插入YYLabel 作为NSAttributedStringAttachment
这里是 NSAttributedString,
let main = NSMutableAttributedString(string: text_)
main.yy_color = .darkGray
main.yy_font = questionFont
main.yy_lineSpacing = 5.0
main.yy_lineBreakMode = .byWordWrapping
//附件
let attachment = NSMutableAttributedString.yy_attachmentString(withContent: self.tf, contentMode: UIView.ContentMode.center, attachmentSize: self.tf.frame.size, alignTo: questionFont, alignment: YYTextVerticalAlignment.bottom)
attachment.yy_baselineOffset = -5.0
root.append(attachment)
//BPTextField
self.tf = BPTextField(frame: CGRect(origin: CGPoint.init(x: 0, y: 13), size: CGSize(width: tfWidth.width + 7.5, height: tfWidth.height + 13.0)))
self.tf.borderStyle = UITextField.BorderStyle.none
self.tf.tag = 0
self.tf.font = questionFont
self.tf.autocorrectionType = UITextAutocorrectionType.no
self.tf.textColor = .darkGray
self.tf.setRoundedCorners(corners: UIRectCorner.allCorners, withRadius: 4.0)
// self.tf.setLeftPaddingPoints(5.0)
// self.tf.setRightPaddingPoints(0.0)
self.tf.backgroundColor = #colorLiteral(red: 0.9058823529, green: 0.9529411765, blue: 1, alpha: 1)
self.tf.tintColor = #colorLiteral(red: 0.2196078431, green: 0.6156862745, blue: 1, alpha: 1)
self.tf.returnKeyType = .done
self.tf.delegate = self
【问题讨论】:
标签: ios swift uitextfield