2014-09-02 11 views
6

꺼짐 상태의 UISwitch에서 onTintColor의 색상을 변경하고 싶습니다. 스위치가 테이블 뷰에 있고 프로그래밍 방식으로 전환됩니다. OFF 상태에 대한 UISwitch 기본 색상을 변경하는 방법?

enter image description here

[settingsSwitch setBackgroundColor:[UIColor whiteColor]]; 
    [settingsSwitch setTintColor:[UIColor whiteColor]]; 
    [settingsSwitch setThumbTintColor:[UIColor redColor]]; 
    [settingsSwitch setOnTintColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; 

내가 흰색 배경 색상을 설정할 때 내가 얻을 결과입니다.

enter image description here

그리고 배경없이

내가 내 셀의 색상 붉은 색을 얻을. onTintColor 어두운 적색한다 ㄴ에 스위치 인 경우

enter image description here

는이 내가 원하는 결과이며, 오프 상태에서 흰색이어야한다.

제가

코드
[settingsSwitch setOnImage:[UIImage imageNamed:@"on.png"]]; 
[settingsSwitch setOffImage:[UIImage imageNamed:@"off.png"]]; 

하지만이 이미지를 변경하지 않는이 라인 전환의 이미지를 설정하려고. 스위치의 색상을 꺼짐 상태로 변경하고 싶습니다. 희망을 명확하게 설명해 주셨습니다. 사전에 도움을 주셔서 감사합니다.

+0

좋은 생각 인 경우 확실하지입니다. 온 스위치가 꺼져있는 것처럼 보입니다. 그리고 스위치가 켜져있는 것처럼 보입니다. (밝은, 흰색, 활성 보이는 색상이 있기 때문에). – Marc

+2

동의하지만 그것은 클라이언트의 요구 사항입니다. –

+0

@iOSDeveloper, 클라이언트는 항상 맞습니다 :) –

답변

7

다음 코드를 사용하여 요구 사항을 충족시킬 수 있습니다.

귀하의 viewDidLoad 상태 변경 IBAction를 호출 할 때

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 

    [self.view setBackgroundColor:[UIColor redColor]]; 

    settingsSwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this 


    if (settingsSwitch.on) { 
     NSLog(@"If body "); 
     [settingsSwitch setThumbTintColor:[UIColor redColor]]; 

     [settingsSwitch setBackgroundColor:[UIColor whiteColor]]; 
     [settingsSwitch setOnTintColor:[UIColor whiteColor]]; 

    }else{ 
     NSLog(@"Else body "); 

     [settingsSwitch setTintColor:[UIColor clearColor]]; 

     [settingsSwitch setThumbTintColor:[UIColor redColor]]; 

     [settingsSwitch setBackgroundColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; 
    } 
} 

방법.

- (IBAction)switchStatusChange:(UISwitch *)sender 
{ 
    if (sender.on) { 
     NSLog(@"If body "); 
     [sender setThumbTintColor:[UIColor redColor]]; 

     [sender setBackgroundColor:[UIColor whiteColor]]; 
     [sender setOnTintColor:[UIColor whiteColor]]; 

    }else{ 
     NSLog(@"Else body "); 

     [sender setTintColor:[UIColor clearColor]]; 

     [sender setThumbTintColor:[UIColor redColor]]; 

     [sender setBackgroundColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; 
    } 
} 
+0

실제로 작동하지만 엄지 손가락으로 왼쪽 또는 오른쪽으로 돌립니다. 해결 방법은 무엇입니까? – Legoless

+0

어떻게 우리가 그것을 부드럽게 만들 수 –

3

원하지 않는 모서리를 제거하는 당신에게 첫 번째 방법을 사용하여 + 국경 반경을 추가 할 수 있습니다

slider.backgroundColor = [UIColor whiteColor]; 
slider.layer.cornerRadius = 18.0; 

원래 대답 this에서합니다. UISwitch에서

+0

국경 코너에 cornerRadius 영향, 그 가난한 해결책 –