UIPickerView 在 UIView 中不显示添加的子视图

Posted

技术标签:

【中文标题】UIPickerView 在 UIView 中不显示添加的子视图【英文标题】:UIPickerView does not show added subview in UIView 【发布时间】:2014-01-27 14:03:41 【问题描述】:

在该示例的末尾,我将子视图添加到 UIView,但未显示子视图。 UIView 正在显示(使其用于测试蓝色并且它在那里)如果我分别返回 rowLabel 或 rowImage 它们正在显示。但没有嵌入到 UIView 中。有什么想法吗?

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 

    NSDictionary *oneResultDict = [_postArray objectAtIndex:row];

    NSData *tmpImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[oneResultDict objectForKey:@"thumbnail"]]];

    UIImage *tmpImage = [UIImage imageWithData:tmpImageData];

    UIImageView *rowImage = [[UIImageView alloc] initWithImage:tmpImage];
    rowImage.frame = CGRectMake(0, 0, 60, 60);

    UILabel *rowLabel = [[UILabel alloc]initWithFrame:CGRectMake(80, 0, 200, 60)];
    rowLabel.text = [oneResultDict objectForKey:@"title"];

    UIView *rowView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 160)];

    [rowView insertSubview:rowImage atIndex:0];
    [rowView insertSubview:rowLabel atIndex:1];

    return rowView;

【问题讨论】:

已解决。 “*rowView”设置为 Y 高度 160。这有点大。当我将它降低到 80 时,一切都在正确的位置。现在我需要找出为什么会发生这种情况。其背后的规律是什么? 显示从您的方法返回的视图的UIView 可能会剪辑您的视图,尝试将clipsToBounds 标志设置为NO。 - 它不会为您提供我假设的完整解决方案,但它可能会帮助您调试问题。 确实是 y 高度。如果我将所有 y 高度... rowLabel、rowImage 和 rowView 设置为相同的 60 大小。一切正常。 clipsToBound 也不起作用。没有效果。 【参考方案1】:

你只需要返回你的视图,你不需要做 [rowView insertSubview:rowImage atIndex:0]。最好是做喜欢

(如果组件 == 0) [rowView addsubview:rowImage]

(如果组件 == 1) [rowView addsubview:rowLabel]

返回行视图

【讨论】:

【参考方案2】:

来自insertSubview:atIndex:Apple Docs:

子视图属性数组中的索引,在该索引处插入 看法。子视图索引从 0 开始,不能大于 子视图的数量。

换句话说:你还没有任何子视图,所以你不能insert一个新的子视图。 尝试改用addSubview:

[rowView addSubview:rowImage];
[rowView addSubview:rowLabel];

【讨论】:

不,这不是问题所在。看我的评论。它是 *rowView Y 高度的大小

以上是关于UIPickerView 在 UIView 中不显示添加的子视图的主要内容,如果未能解决你的问题,请参考以下文章

加载时如何将 UIPickerView 放在 UIView 之外

ios:如何让 UIPickerView(UIView) 在 UITouchRecognizer 之前捕获触摸事件?

同一个 UIView 中的多个 UIPickerView

UIPickerView 在 IOS 8 中不起作用

如何在 iOS7 中使 UIPickerView 不透明?

UIPickerView 选择更新 UITextFields 的 NSArray