And*_*ers 6 objective-c uiview ios
我正在尝试更改我的一个UIView子类的背景颜色.出于某种原因self.backgroundColor = [UIColor whiteColor];,当我将它- (id)initWithFrame:(CGRect)frame放在视图中的方法中时,它什么也没做.视图始终是黑色的.我也试过self.myView.backgroundColor ...了我的视图控制器,但这也没用.关于我做错了什么的任何想法?
相关代码如下所示:
[...]
@interface PaperView : UIView
[....]
[...]
@implementation PaperView
[...]
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[...]
// Initialization code
self.backgroundColor = [UIColor whiteColor]; // This doesn't do anything, the view is always black.
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我有同样的问题.我迷上了layoutSubviews(),它运作正常:
override func layoutSubviews() {
super.layoutSubviews()
self.backgroundColor = UIColor.clearColor()
}
Run Code Online (Sandbox Code Playgroud)
这表明视图没有设置框架。我建议在你的程序中设置一个断点initWithFrame:来验证它是否被调用。如果您打电话给,例如,... = [UIView alloc] init]那么这可能是您问题的根源。
编辑
如果initWithFrame:实际上被调用,则该视图可能被另一个视图覆盖,看起来它不起作用(因为您看不到它)或者视图本身被隐藏。
另一种排除故障的方法是覆盖backgroundColor 属性并设置断点。找出调用堆栈中的其他内容正在改变颜色。