2016-09-15 1 views
0

나는 이것을 이해할 수 없다고 생각할 수 없습니다. 어제 스위프트 3로 이주한 후에 나는 모든 것을 얻었지만 한가지는 작동했습니다.Swift 2.2에서 Swift 3으로 마이그레이션하면 내 사용자 정의 서브 클래 싱 된 UIButton이 배경색을 설정하지 못했습니다.

UIButton에서 서브 클래 싱하는 사용자 정의 버튼을 만들었습니다. 선택시 배경색을 변경하고 싶습니다. 이것은 Swift 2.2에서 효과가있었습니다. 이제 버튼을 눌렀을 때 배경색을 바꿀 수 없습니다. UIButton의 배경색을 변경할 수는 있지만 서브 클래 싱 된 단추는 변경할 수 없습니다.

스위프트 3에서 변경된 사항은 무엇입니까? 그런데 setTitleColor의 색상이 변경됩니다.

코드 :

func selectButton(_ button: CustomButton) { 
    button.isSelected = true 
    button.backgroundColor = UIColor.red 
    button.setTitleColor(UIColor.white, for: .selected) 
} 

내가 printstatements을 추가 할 때, 출력이 다르지만보기 (컬러)이 변경되지 않았 음을 참조하십시오.

print("CHANGE COLOR FROM: \(button.backgroundColor)") 
button.backgroundColor = UIColor.red 
button.setTitleColor(UIColor.white, for: .selected) 
button.setNeedsDisplay() 
print("CHANGE COLOR TO: \(button.backgroundColor)") 

출력 :

CHANGE COLOR FROM: Optional(UIExtendedGrayColorSpace 1 1) 
CHANGE COLOR TO: Optional(UIExtendedSRGBColorSpace 1 0 0 1) 
+0

에 약간의 코드를 설명? 나는 수십 개의 "UIViews"(UIButtons도 포함)를 가지고 있으며, 나는 어제 마이 그 레이션을 했었고, 그럴 수없는 견해는 망가지지 않았다. 그 문제는 일반적인 것 같지 않기 때문에 당신이 한 일을 보는 것이 좋을 것입니다. – holex

+0

흠, 좋은 소식 (여전히 가능합니다)과 나쁨 (뭔가 잘못하고있는 것처럼 보입니다). 아픈 질문을 편집하십시오. –

+0

실제 코드입니까? 'Color.bePrEPared.red()'가'nil'이 아닌지 어떻게 확신 할 수 있습니까? – holex

답변

0

내가 실제로 문제가 CornerRadius를 어떻게 든 내 버튼을 엉망으로 된 설정 것을 발견했다. cornerRadius를 제거하거나 viewDidAppear에서이를 변경하면 문제가 해결됩니다.

또한 어쩌면, cornerRadius stopped working in Swift 2.3/iOS 10/Xcode 8