Я пытаюсь добавить градиент для TableViewCell. Я обновляю слой градиента в LayoutSubview (). Когда я отлаживаю, похоже, что он устанавливает правильное значение для кадра слоя. Но градиент не «перерисовывается» или что-то в этом роде, так как при каждом повороте градиент отображается с размером для предыдущей ориентации. Что я делаю не так?
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();
}
поместите свои коды в метод drawrect вместо awakeFromNib
Вы можете показать снимок экрана или что-то еще, чтобы понять, в чем проблема?





Я переместил обновление слоя из LayoutSubview в Draw, как это было предложено @dip
public override void Draw(CGRect rect)
{
_gradient.Frame = ContentView.Bounds;
base.Draw(rect);
}
Макет сейчас рабочий.
У вас есть
preparreForSubViewв вашей ячейке и сбросьте градиентный слой или удалите из него?