iOS7 UIPickerView无法正确显示包含图像的自定义视图

时间:2013-10-03 11:43:45

标签: uikit ios7 uipickerview

此问题始于iOS7中使用新的UIPickerView控制器。要在UIPickerView控制器中使用图像,必须使用委托方法返回图像:

pickerView:viewForRow:forComponent:reusingView:

问题在于屏幕随后出现各种奇怪的行为 - 当您在控件上下移动手指时,图像视图会消失。

2 个答案:

答案 0 :(得分:13)

这是一个发布在开发论坛上的解决方案,该论坛适用于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;
}

答案 1 :(得分:3)

有一种比Ed Trujilo的方法更简单的方法(它假设你使用的是UIImageView,但是......我相信Ed的方法适用于任何UIView)

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    return [[UIImageView alloc] initWithImage: [mpSelections[row] image]];
}