此問題在iOS7中使用新的UIPickerView控制器開始發生。要在UIPickerView控制器使用的圖片,你必須使用委託方法返回一個圖像:iOS7 UIPickerView無法正確顯示帶圖像的自定義視圖
pickerView:viewForRow:forComponent:reusingView:
的問題是,屏幕隨後顯示出各種奇怪的行爲 - 圖像在控制檯上下移動手指時,視圖消失。
此問題在iOS7中使用新的UIPickerView控制器開始發生。要在UIPickerView控制器使用的圖片,你必須使用委託方法返回一個圖像:iOS7 UIPickerView無法正確顯示帶圖像的自定義視圖
pickerView:viewForRow:forComponent:reusingView:
的問題是,屏幕隨後顯示出各種奇怪的行爲 - 圖像在控制檯上下移動手指時,視圖消失。
這是張貼在開發論壇,其工作方式的iOS 7.0.2的解決方案:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
// self.myImages is an array of UIImageView objects
UIView * myView = [self.myImages objectAtIndex:row];
// first convert to a UIImage
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, NO, 0);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// then convert back to a UIImageView and return it
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
return imageView;
}
這工作得很好。謝謝! –
有什麼想法這裏發生了什麼?也許是開發論壇的鏈接? – QED
謝謝你的解決方案....但爲什麼我們應該做這一切的混亂,而不是簡單地返回'UIImageView'對象?我的意思是,我們是否有可能在7.0.4中仍然有這種奇怪的行爲? –
有一種更簡單的方式來做到這一點比埃德Trujilo的方法(假設你正在使用的UIImageView的但是...我相信Ed的方法應該適用於任何UIView)。
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
return [[UIImageView alloc] initWithImage: [mpSelections[row] image]];
}
@Goz的這個解決方案爲我工作。但是我花了一段時間才瞭解解決方案。重要的方面似乎是你必須實例化一個新的'UIImageView'並將圖像放入它。在我明白這一點之前,我只是返回緩存在數組上的UIImageView。 –
有一個比你的答案稍微簡單的方法。對我來說還不夠好,但已經指出了我的正確方向。 – Goz
我發現了一個問題的描述,它給出了有關UIPickerView不顯示「正確」的含義的更多細節:有兩個問題。首先,當您在手柄上下移動手指時,圖像視圖消失。其次,在選擇區域(中間條紋)中沒有任何東西可以顯示,它是空白的。來源:[鏈接](http://forums.xamarin.com/discussion/9138/ios7-uipickerview-not-display-custom-views-with-images) –