【发布时间】:2013-09-26 20:00:26
【问题描述】:
在 iOS7 之前,这样的代码在 UIImageView 的子类上运行良好。 但不再工作了。
-(id) initWithFrame:(CGRect) frame{
self = [super initWithFrame:frame];
if(self){
self.backgroundColor = [UIColor redColor];
}
return self;
}
我还在 InterfaceBuilder 上检查了这一点。
再一次,UIImageView 的 backgroundColor 的值不会改变任何东西...
所有这些都适用于 UIView...
那么,它的 UIImageView 怎么了?不还是 UIView 的子类吗?
还是从 iOS7 禁用此属性?
或者是否有任何我必须设置的新属性才能使其正常工作?
可能这段代码更好地描述了这个问题:
UIImageView *imageView =[ [UIImageView alloc] initWithImage:[UIImage imageNamed:@"ImageName.png"];
imageView.backgroundColor = [UIColor redColor];
更改 backgroundColor 的值在它没有 image 属性时有效。 但后来它不再是 backgroundColor...
【问题讨论】:
-
你是如何创建图像视图的?它的大小是多少,图像的大小是多少?您使用的是什么内容模式?
-
imageView的frameSize和imageSize都是35x35。我没有将 contentMode 设置为应用其默认值 (UIViewContentModeScaleToFill)。为了创建 UIImageView 的子类,它实际上调用了 initWithFrame: 虽然它有点自定义设置两个附加值。 (initWithFrame:commandTag:mainController:) 因为我用这个作为按钮,所以颜色是之后设置的,而不是在 initWithFrame 中。
-
那么如果图片和视图大小一样,你希望什么时候可以看到背景色?
-
对不起,我不知道我是否明白你的意思,但是通过图像应该可以看到背景颜色的变化。直到 iOS6 为止,它都是这样工作的。
-
所以图像是部分透明的?你试过不加图片吗?
标签: objective-c uiimageview ios7 uibackgroundcolor