具有渐变层的 TableViewCell -> 布局问题
TableViewCell with gradient layer -> layout issues
我正在尝试为 TableViewCell 添加渐变。我正在更新 LayoutSubview() 中的渐变层。当我调试时,它看起来像是为图层框架设置了正确的值。但是渐变不是 "redrawn" 或在每次旋转时显示的渐变与先前方向的大小一样。我做错了什么?
public override void AwakeFromNib()
{
base.AwakeFromNib();
_gradient = new CAGradientLayer();
_gradient.Frame = ContentView.Bounds;
_gradient.BackgroundColor = UIColor.Red.CGColor;
_gradient.StartPoint = new CGPoint(0, 0);
_gradient.EndPoint = new CGPoint(1, 1);
_gradient.Colors = new[] { _topColor, _bottomColor };
this.ContentView.Layer.InsertSublayer(_gradient, 0);
}
public override void LayoutSubviews()
{
_gradient.Frame = ContentView.Bounds;
base.LayoutSubviews();
}
我按照@dip
的建议将图层更新从 LayoutSubview 移到了 Draw
public override void Draw(CGRect rect)
{
_gradient.Frame = ContentView.Bounds;
base.Draw(rect);
}
现在布局正常。
我正在尝试为 TableViewCell 添加渐变。我正在更新 LayoutSubview() 中的渐变层。当我调试时,它看起来像是为图层框架设置了正确的值。但是渐变不是 "redrawn" 或在每次旋转时显示的渐变与先前方向的大小一样。我做错了什么?
public override void AwakeFromNib()
{
base.AwakeFromNib();
_gradient = new CAGradientLayer();
_gradient.Frame = ContentView.Bounds;
_gradient.BackgroundColor = UIColor.Red.CGColor;
_gradient.StartPoint = new CGPoint(0, 0);
_gradient.EndPoint = new CGPoint(1, 1);
_gradient.Colors = new[] { _topColor, _bottomColor };
this.ContentView.Layer.InsertSublayer(_gradient, 0);
}
public override void LayoutSubviews()
{
_gradient.Frame = ContentView.Bounds;
base.LayoutSubviews();
}
我按照@dip
的建议将图层更新从 LayoutSubview 移到了 Draw public override void Draw(CGRect rect)
{
_gradient.Frame = ContentView.Bounds;
base.Draw(rect);
}
现在布局正常。