2011-10-26 46 views
2

嘿,大家好我是新來的MonoTouch,有問題。 你們中的任何人都可以告訴我如何設置子視圖的位置嗎? 我試過這個:MonoTouch從子視角設置位置

UIImageView imageview = new UIImageView(this.ImageSource); 

this.AddSubview(imageview); 

this.Subviews[0].Bounds.X = 30; 

我希望你們任何人都可以幫助我。

感謝

回答

5

除了BoundsFrame(由@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財產(以您設定的新值)。

+0

非常感謝你munch :-)現在,它的工作原理! – Alex

2

Bounds財產給你,好了,視圖的邊界。 如果要重新定位它,使用:

var vourView = this.Subviews[0]; 
yourView.Frame = new RectangleF(new PointF(x, y), yourView.Bounds.Size); 

yourView.Center = new PointF(newCenterX, newCenterY)