我需要为UIView绘制自定义边框。
我已经有了可以实现此功能的代码,但是这些代码是在我们开始使用自动布局之前编写的。
这段代码基本上是添加一个宽度/高度为1.0f的子层。
-(void)BordeIzquierdo:(UIColor *)pcColor cfloatTamanio:(CGFloat )pcfloatTamanio
{
CALayer* clElemento = [self layer];
CALayer *clDerecho = [CALayer layer];
clDerecho.borderColor = [UIColor darkGrayColor].CGColor;
clDerecho.borderWidth = pcfloatTamanio;
clDerecho.frame = CGRectMake(0, 1, pcfloatTamanio, self.frame.size.height);
[clDerecho setBorderColor:pcColor.CGColor];
[clElemento addSublayer:clDerecho];
}
现在的问题是,使用自动布局时,这发生在layoutSubViews之前。因此,UIView.layer.frame是(0,0;0,0),因此添加的子层不会显示,因为其宽度/高度=0.0f。
现在我该怎么做才能使此代码无需传输到另一个方法(例如didLayoutSubviews)而执行自定义绘图呢?
我希望这种样式在调用viewDidLoad之前被正确应用。
- 有没有类似于自动布局约束的东西可以与CALayers一起使用?
- 还有其他想法吗?
viewDidLoad
和layoutSubviews
两个位置上编写代码。 - pgpb.padillaviewDidLoad
方法。但是有一个layoutSubviews
方法。所以那只是一个地方而已。 - mattBOOL
标志的代码,但第一次调用时,frame为(0,0;0,0),因此新图层无法正确创建并设置了标志,所以第二次什么也不会发生。目前我将保留未经验证的代码,这样可以工作。我只是希望它不会在性能方面给我带来麻烦。 - pgpb.padilla