0
我試圖使用CAGradientLayer
設置梯度到StyledStringElement
中的單元格。這是我的代碼至今:將漸變設置爲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,所以點擊它後,它確實顯示了正確的圓角矩形框。
此外,顏色看起來很正確,但漸變看起來拉長,所以按鈕看起來像是漸變中的一種顏色,而不是漸變本身。
我在做什麼錯?
謝謝,我會檢查出ImageElement,看看它是如何完成的。除此之外,還有沒有其他的方式來做到這一點,而不使用圖像或使用圖層?我發現我只是在頂部添加了一個圖層,並沒有考慮到按鈕的邊界,而且我覺得圖層路線可能不是我們要去的地方。 –