我正在尝试使用CAGradientLayer
为StyledStringElement
中的单元格设置渐变。这是我到目前为止的代码:
public class DerreckStyledStringElement : StyledStringElement
{
public DerreckStyledStringElement(string caption) : base(caption) {
}
public override UITableViewCell GetCell(UITableView tv)
{
var x = base.GetCell(tv);
CAGradientLayer g = new CAGradientLayer();
g.Frame = x.Frame;
g.MasksToBounds = true;
x.ClipsToBounds = true;
g.Colors = new MonoTouch.CoreGraphics.CGColor[]
{
new UIColor(0f, 153f, 235f, 255f).CGColor,
new UIColor(0f, 197f, 244f, 255f).CGColor
};
UIView bg = new UIView(x.Bounds);
bg.TranslatesAutoresizingMaskIntoConstraints = true;
bg.Layer.InsertSublayer(g, 0);
x.BackgroundView = bg;
this.TextColor = UIColor.White;
return x;
}
}
我正在测试它的按钮,它本身就是一个看起来像没有圆角的正方形,右侧延伸到设备的右边缘。最有可能的是,它可能会从屏幕上延伸一点,因为按钮的左边距看起来是正确的。
What it should look like
| /---------------------\ |
| | BUTTON TEXT | |
| \---------------------/ |
What it looks like
| |------------------------|
| | BUTTON TEXT |
| |------------------------|
我使用g.MasksToBounds = true;
,x.ClipsToBounds = true;
和bg.TranslatesAutoresizingMaskIntoConstraints = true;
的地方是尝试将背景剪切到按钮框架本身。
由于我没有修改过SelectedBackground,因此在点击时会显示正确的圆角矩形框。
此外,颜色看起来正确,但渐变看起来很拉伸,因此按钮看起来像是渐变的一种颜色,而不是渐变本身。
我做错了什么?
答案 0 :(得分:0)
单个细胞负责用圆角渲染自己。
有几种方法,一种是在渲染过程中执行此操作(请参阅ImageElement示例)。另外,如果您选择沿着图层路径向下,则在图层上设置CornerRadius属性。