UITextField에 밑줄을 긋기에 대한 질문이 있습니다. 아래 그림과 같이 양쪽 끝에 막대가있는 밑줄을 표시하려고합니다. Swift의 UITextField 사용자 정의 밑줄
나는 다음과 같은 노력이 하나있어. 오른쪽 끝에 막대가 없습니다.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를 인쇄 할 수 있습니까? 이 값들은 무엇입니까? –