iOS7 上 UICollectionViewCell 中的 UIImageView 自动布局问题,但在 iOS8 上没问题
Posted
技术标签:
【中文标题】iOS7 上 UICollectionViewCell 中的 UIImageView 自动布局问题,但在 iOS8 上没问题【英文标题】:UIImageView autolayout issue in UICollectionViewCell on iOS7 but on iOS8 it's ok 【发布时间】:2014-12-25 08:55:22 【问题描述】:在 ImageView 中减小图像大小时遇到问题。 在 CollectionViewCell 中有带有约束的 ImageView:两个水平空间和两个垂直空间。 第一个屏幕是ios7,第二个屏幕是iOS8。
ImageURL 它是通过 URL 加载图像的自定义类,它可以正常工作,还可以设置一个类似的图像
_clothesImageView.image = [UIImage imageNamed:@"imageName.png"];
- (void)configCellWithClothesModel:(ClothesModel *)clothesModel
[_clothesImageView setImageURL:[NSURL URLWithString:clothesModel.imageURL]];
衣服模型:
- (instancetype)initWithDict:(NSDictionary *)dict
self = [super init];
if (self)
_isShop = @(YES);
self.title = [self checkNullAndNill:dict[kTitle]];
self.info = [self checkNullAndNill:dict[kDescription_Short]];
self.artNumber = [self checkNullAndNill:dict[kArtNumber]];
self.afLink = [self checkNullAndNill:dict[kDeeplink1]];
self.imageURL = [self checkNullAndNill:dict[kImg_url]];
_isCart = @(NO);
return self;
//==============================================================================
- (id)checkNullAndNill:(id)object
if (object == nil)
return @"";
else if (object == [NSNull null])
return @"";
else
return object;
//==============================================================================
- (UICollectionViewCell *)configCellWithType:(NSString *)type collectionView:(UICollectionView *)collectionView indexPath:(NSIndexPath *)indexPath
ClothesCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[type isEqualToString:@"Outfits"] ? @"CellOutfits" : @"Cell" forIndexPath:indexPath];
[cell configCellWithClothesModel:self];
return cell;
//==============================================================================
【问题讨论】:
给我们一些 ClothesModel 类的代码。尤其是图片部分。 放一些代码。你是在 iPhone 5 还是 iPhone 6 上运行代码? @hris.to 完成。自定义类工作正常。 @AshishKakkad iPhone 6 不支持 iOS7。我在所有装有 iOS7 的设备上运行并遇到同样的问题。 我认为尝试 [imgView.layer setMaskToBound:YES] 如果它不起作用,然后尝试 [imgView setContentMode:] 在 contentMode 中有 UIViewContentModeScaleAspectFill、UIViewContentModeScaleAspectFit 和 UIViewContentModeScaleAspectFit 等等,但是这三个之一可能会有所帮助你 【参考方案1】:在 Xcode6 中,界面构建器不会向您显示单元格的内容视图。 CollectionViewCell 在 iOS7 中具有内容视图,其框架设置为默认值 (0,0,50,50)。 您需要在 CollectionViewCell 子类中添加此代码,因此 contentView 将自行调整大小
- (void)awakeFromNib
[super awakeFromNib];
self.contentView.frame = self.bounds;
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
【讨论】:
很好的答案!帮了我很多。你让我想起了我的奶奶,当我需要帮助时,她给了我解决方案!【参考方案2】:这实际上取决于自动布局设置。UIImageView
s 通常根据其固有内容大小设置它们的大小,该大小设置为它们所托管的图像的大小。
如果您的集合视图单元格没有足够数量的约束,您所看到的可能取决于不同 iOS 上的自动布局引擎实现。
还要按照 cmets 中的说明检查图像视图的内容模式。
【讨论】:
我已经删除了所有的限制,它在 iOS7 上可以工作,但是当我在 iPhone 6 或 6+ 上运行时,图像并没有增加尺寸。 你不需要去掉约束,但要正确设置 例如,假设图像视图应该在整个单元格内容视图中延伸。图像视图的正确约束是前导、尾随、顶部和底部,常量等于 0。 是的,我做到了。那是以前。以上是关于iOS7 上 UICollectionViewCell 中的 UIImageView 自动布局问题,但在 iOS8 上没问题的主要内容,如果未能解决你的问题,请参考以下文章