私はUITextFieldに下線を引くことについて質問があります。 私は、下に示すように両端にバーがあるアンダーラインを作ろうとしています。UITextField Swiftのカスタム下線
私は次のことを試してみましたし、この1つを得ました。右端にバーはありません。
extension UITextField {
func underline() {
let borderWidth = CGFloat(1.0)
let endBorderHeight = CGFloat(10.0)
let bottom = CALayer()
bottom.frame = CGRect(
x: 1,
y: self.frame.height - borderWidth,
width: self.frame.width - 2,
height: borderWidth)
bottom.borderWidth = borderWidth
bottom.borderColor = UIColor.lightGrayColor().CGColor
let leftEndBorder = CALayer()
leftEndBorder.frame = CGRect(
x: 0,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
leftEndBorder.borderWidth = borderWidth
leftEndBorder.borderColor = UIColor.lightGrayColor().CGColor
print(bottom.frame.width)
let rightEndBorder = CALayer()
rightEndBorder.frame = CGRect(
x: self.frame.width - 1,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
rightEndBorder.borderWidth = borderWidth
rightEndBorder.borderColor = UIColor.lightGrayColor().CGColor
self.layer.addSublayer(leftEndBorder)
self.layer.addSublayer(bottom)
self.layer.addSublayer(rightEndBorder)
self.layer.masksToBounds = true
}
}
私は左側のバーを作ることができるが、苦労があるためrightEndBorderおそらくの間違ったx位置の右側を作りますか?
誰でも私が間違っていることを教えてもらえますか?
-----編集
は私が200にrightEndBorderのx位置を設定しようとしましたが、それは私に次のことを与えました。
しかし、私は300に設定しようとした場合、私はもうそれを見ることはありません。
-----全体のテキストフィールドが画面に表示された場合はチェック編集
。
-----それは私が推測するテキストフィールドの幅を変更し、先頭と末尾の制約ということであった編集
。
-----ソリューション
問題は、私はテキストフィールドに制約を先頭と末尾いたことだったとunlineが挿入された後、これらの制約は、幅を変更しました。 googleを検索した後、関数内に制約が適用された後に下線を付ける必要があるとわかりました。viewDidLayoutSubviews()。
このコードを実行した後でtextFieldの幅を変更していますか? –
@IanMosesストーリーボードに設定された制約がその幅を変更しないとは思いません。ストーリーボード上にテキストフィールドを作成し、viewDidLoad()に下線を追加しました。 – eChung00
初期化後、テキストフィールドとテキストフィールドrightEndBorder x-originsを印刷できますか?これらの値は何ですか? –