我在自定义表格视图单元格中有一个IBOutlet。
@property (weak, nonatomic) IBOutlet UIView *innerContainer;
我想将getter重写为
-(UIView *)innerContainer
{
UIColor * shadowColor= [UIColor colorWithRed:199/255.0f
green:178/255.0f
blue:153/255.0f
alpha:1];
_innerContainer.layer.shadowOffset = CGSizeMake(0, 0);
_innerContainer.layer.shadowColor = [shadowColor CGColor];
_innerContainer.layer.shadowRadius = 4;
_innerContainer.layer.shadowOpacity = .75;
CGRect shadowFrame = _innerContainer.layer.bounds;
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
_innerContainer.layer.shadowPath = shadowPath;
return _innerContainer;
}
但似乎没有效果。另一方面,如果我将阴影添加到<{p}内的innerContainer
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
然后效果是什么?
我尝试添加@synthesize innerContainer=_innerContainer
,但这没有任何区别。
有没有办法覆盖IBOutlet的getter?
答案 0 :(得分:1)
这不是正确的做法。使用当前代码,每次访问innerContainer
时都会执行设置阴影的工作。它可能无法正常工作,因为您没有直接在代码中访问innerContainer
,并且从未执行过getter。另一方面,如果您多次访问该属性,则每次都会执行该工作,这是过度的。相反,覆盖表视图单元格的awakeFromNib
方法,并将此逻辑放在那里。只要您的所有商店都已建立,就会调用此方法,这是您创建阴影的逻辑的正确位置。