UIView のカスタム ボーダーを描画する必要があります。
私はすでにそれを行うコードを持っていますが、autolayout を使い始める前に書かれたものです。
コードは基本的に、幅/高さ = 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];
}
問題は、autolayout では、これが layoutSubViews の前に発生することです。(0,0;0,0) も同様で、追加されたサブレイヤーは表示されません。これUIView.layer.frame
は、幅/高さ = 0.0f であるためです。
このカスタム描画をviewDidLoad
などの後に実行される別のメソッドに転送せずに、このコードを作成するにはどうすればよいですかdidLayoutSubviews
。
viewDidLoad
が呼び出される前に、このスタイリングを正しく適用したいと思います。
- で使用できる自動レイアウト制約のようなものはあり
CALayers
ますか? - 他のアイデアはありますか?