嘿,大家好我是新來的MonoTouch,有問題。 你們中的任何人都可以告訴我如何設置子視圖的位置嗎? 我試過這個:MonoTouch從子視角設置位置
UIImageView imageview = new UIImageView(this.ImageSource);
this.AddSubview(imageview);
this.Subviews[0].Bounds.X = 30;
我希望你們任何人都可以幫助我。
感謝
嘿,大家好我是新來的MonoTouch,有問題。 你們中的任何人都可以告訴我如何設置子視圖的位置嗎? 我試過這個:MonoTouch從子視角設置位置
UIImageView imageview = new UIImageView(this.ImageSource);
this.AddSubview(imageview);
this.Subviews[0].Bounds.X = 30;
我希望你們任何人都可以幫助我。
感謝
除了Bounds
或Frame
(由@Krumelur提到的)有一個在你的代碼中的.NET問題。
RectangleF
是一個值類型(結構),而不是引用類型。您無法在.NET中更改其屬性/字段,而無需創建新實例(直接或間接);
即Bounds
的屬性獲得者將總是返回新的實例。所以你的分配是在一個不同於Subviews[0]
正在使用的實例上完成的。
證明:
Console.WriteLine (Object.ReferenceEquals (this.Subviews[0].Bounds,
this.Subviews[0].Bounds)); // prints 'False'
因此,你需要在這樣的情況下,做的是:
var bounds = this.Subviews[0].Bounds;
bounds.X = 30.0f;
this.Subviews[0].Bounds = bounds;
所以新RectangleF
(結構)實例分配回Bounds
財產(以您設定的新值)。
的Bounds
財產給你,好了,視圖的邊界。 如果要重新定位它,使用:
var vourView = this.Subviews[0];
yourView.Frame = new RectangleF(new PointF(x, y), yourView.Bounds.Size);
或
yourView.Center = new PointF(newCenterX, newCenterY)
非常感謝你munch :-)現在,它的工作原理! – Alex