【问题标题】:TableViewCell with gradient layer -> layout issues带有渐变层的 TableViewCell -> 布局问题
【发布时间】:2018-06-22 10:47:52
【问题描述】:

我正在尝试为 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();
    }

【问题讨论】:

  • 您的单元格中是否有preparreForSubView 并重置渐变层或从中删除?
  • 把你的代码放在 drawrect 方法中,而不是 awakeFromNib
  • 你能显示截图或其他东西来看看问题是什么吗?

标签: ios uitableview xamarin layout gradient


【解决方案1】:

按照@dip 的建议,我将图层更新从 LayoutSubview 移动到 Draw

    public override void Draw(CGRect rect)
    {
        _gradient.Frame = ContentView.Bounds;
        base.Draw(rect);
    }

布局现在可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多