2014-10-11 2 views
1

은 아이폰 OS 8 이전 스피너는, 상단과 뒤에 그라데이션 배경을 보여줄 것이다 있도록 UIPickerView에 그라데이션 배경을 설정할 수 다음과 같이 8 아이폰 OS에 깨진 그라데이션 :UIPickerView -

enter image description here

여기에 이전에 아이폰 OS 8 위의 코드입니다 :

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = pickerView.bounds; 
gradient.colors = [NSArray arrayWithObjects: 
        (id)[[UIColor blackColor] CGColor], 
        (id)[[UIColor darkGrayColor] CGColor], 
        (id)[[UIColor lightGrayColor] CGColor], 
        (id)[[UIColor whiteColor] CGColor], 
        (id)[[UIColor lightGrayColor] CGColor], 
        (id)[[UIColor darkGrayColor] CGColor], 
        (id)[[UIColor blackColor] CGColor], 
        nil]; 

[pickerView.layer insertSublayer:gradient atIndex:0]; 

아이폰 OS 8 위의 코드를 사용하여이 여기에 표시 것입니다 :

<PastedGraphic-2.tiff>

두 가지 선택기가 여전히 작동하지만, 사용자가 볼 수있는 것처럼 UI는 허용되지 않습니다.

제안 사항? 미리 감사드립니다!

+0

Vidhi - 더 구체적인 태그에 대해 언급했는데, 더 구체적으로 필요한 것은 무엇입니까? 문제는 내가 게시 한 코드가 iOS 6 및 7에서는 작동했지만 iOS 8에서는 작동하지 않는다는 것입니다. 그래야 그라디언트 배경을 피커 선택기 수준의 '뒤에'표시하는 방법을 알아야합니다. iOS 8부터, 내가 사용한 논리 (addSubLayer : atIndex)가 모든 것을 TOP에 놓고 있습니다. 제안? 감사... – Cal30

답변

1

그래, 해결 방법을 찾았지만 여전히 다른 좋은 옵션을 사용할 수 있습니다. 내 솔루션은 다음과 같습니다

  1. 위와 같이 내 그라데이션을 만들고 계층으로 UILabel의에 추가 UIPickerView
  2. 뒤에 UIPickerView의 backgroundColor 투명
  3. 장소에게 UILabel의 확인 : 여기 atIndex 0

코드 샘플은 다음과 같습니다.

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = colorPickerBackgroundLabel.bounds; 
gradient.colors = [NSArray arrayWithObjects: 
        (id)[[UIColor blackColor] CGColor], 
        (id)[[UIColor darkGrayColor] CGColor], 
        (id)[[UIColor lightGrayColor] CGColor], 
        (id)[[UIColor whiteColor] CGColor], 
        (id)[[UIColor lightGrayColor] CGColor], 
        (id)[[UIColor darkGrayColor] CGColor], 
        (id)[[UIColor blackColor] CGColor], 
        nil]; 
[colorPickerBackgroundLabel.layer addSublayer:gradient]; 

완성 된 화면 영역 캡처는 다음과 같습니다.

Finished UIPicker w/ gradient background