2016-08-26 3 views
1

저는 Swift에서 새로 왔는데 문제가 있습니다. 내 단추는 그라디언트를 사용하려고하면 텍스트를 설정하지 않습니다. 여기 내 코드 :Swift Button.setText가 그래디언트와 함께 작동하지 않습니다.

let gradient:CAGradientLayer = CAGradientLayer() 
    let colorBottom = UIColor(red: 9/255.0, green: 137/255.0, blue: 133/255.0, alpha: 1.0).CGColor 
    let colorTop = UIColor(red: 222.0/255.0, green: 255.0/255.0, blue: 201.0/255.0, alpha: 1.0).CGColor 

    gradient.colors = [colorTop, colorBottom] 
    gradient.startPoint = CGPoint(x: 0.0, y: 0.5) 
    gradient.endPoint = CGPoint(x: 1.0, y: 0.5) 
    gradient.frame = LoginButton.bounds 
    gradient.cornerRadius = 25.0 


    LoginButton.layer.addSublayer(gradient) 
    LoginButton.setTitle("Login", forState: UIControlState.Normal) 
    LoginButton.setTitleColor(UIColor.blackColor(), forState: .Normal) 


    self.view.addSubview(LoginButton) 
+0

당신은 UIColor.blackColor을 변경 – RyanM

+0

@techedryan 텍스트 –

+0

시도하면'LoginButton.layer.insertSublayer (그라데이션, belowSublayer LoginButton.titleLabel.layer)를'봤어 – RyanM

답변

0

서브 층을 추가하므로 하위 뷰 부가 구배 층은 텍스트를 렌더링하는 다른 층을 피복 할 수있다 추가로 동일하게 작동한다.

이 줄을 제거하면 작동합니까?

LoginButton.layer.addSublayer(gradient) 

만약 그렇다면, LoginButton.layer.sublayers에 얼마나 많은 층 보는 시도하고 다음 방법 중 하나를 사용하여 그 하위 레이어 중 하나 (이 최고의 보이는 곳) 뒤에 그라디언트 레이어를 삽입하십시오 :

-insertSublayer:above: 
-insertSublayer:below: 
-insertSublayer:atIndex: 
+1

맞습니다. 하위 레이어에 들어가서 작동합니다. LoginButton.layer.insertSublayer (gradient, atIndex : 0) –

0

이 문제는 다음과 같습니다.

UIButton에 추가 레이어를 추가하지 마십시오. 이미 자신을 그리는 법을 알고 있습니다. 그라데이션 배경을 사용하려면 이미지에 그라디언트를 그리고 버튼의 배경 이미지로 정상적인 방식으로 설정합니다.

단추를 지우고 단추 뒤쪽에있는 뒤의 단추를 그라데이션 레이어로 지정합니다 (좋지는 않지만).

관련 문제