2017-01-31 10 views
3

透明な背景と境界線のみを使用してtextFieldを作成するにはどうすればよいですか?スウィフトの入力を透明にして、境界線を下にして透明にします

私はこのコードを試してみました:

textField.backgroundColor = .clear 
let border = CALayer() 
let width = CGFloat(2.0) 
border.borderColor = UIColor.darkGrayColor().CGColor 
border.frame = CGRect(x: 0, y: textField.frame.size.height - width, width: textField.frame.size.width, height: textField.frame.size.height) 
border.borderWidth = width 
textField.layer.addSublayer(border) 
textField.layer.masksToBounds = true 

をしかし、それは動作しません。

+0

「動作していません」と定義します。 – rmaddy

+0

@rmaddy空白を表示しているだけです – user7444742

+0

制約付きのXib - テキスト編集の下に1行の高さのボックスを作成してください。制約なしのXib - 同じことを行いますが、テキストフィールドと同じサイズ変更マスクを設定します。 M Danの回答があっても、このコードは必要ありません。私はこれらの4つを読むことをお勧めします:View Controller、Animation、AppleからのQuartz2Dガイド –

答えて

5

これは、CALayerではなくUIViewを使用した別の実装です。

let line = UIView() 
line.frame.size = CGSize(width: textField.frame.size.width, height: 1) 
line.frame.origin = CGPoint(x: 0, y: textField.frame.maxY - line.frame.height) 
line.backgroundColor = UIColor.darkGray 
line.autoresizingMask = [.flexibleWidth, .flexibleTopMargin] 
textField.addSubview(line) 
+0

あなたはスマートです。あなたはとてもスマートです – user7444742

3

コードは正しいです。問題はあなたのボーダーの高さが "textField.frame.size.height"になったときだけ1.0に変更します(ボーダーフレームのコードを変更してください)。

+0

それでもまだ何も表示されていません – user7444742

+0

UIRectEdgeタイプはOptionSetです(複数のエッジがあるかもしれません)ので、そのケースを切り替えるときに1つの要素。ブレークは、デフォルトのケースでのみ必要です(デフォルトのケースが空の場合のみ)。 –

2

これを試してください:

txtField .borderStyle = .none 

それは....あなたを助けるかもしれない:)

0

ちょうどあなたのコードでこの行を追加します -

border.backgroundColor = UIColor.black.cgColor 
0

このコードをしかし、私のためにうまく動作しているようだが、backgroundColorをクリアしてこの問題を解決するように設定する。

textField.backgroundColor = .clear

関連する問題