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 を変更していないため、タップすると、その周りに正しい角丸長方形のフレームが表示されます。
また、色は正しく見えますが、グラデーションが引き伸ばされているように見えるため、ボタンはグラデーション自体ではなく、グラデーションからの 1 つの色のように見えます。
私は何を間違っていますか?