MonoTouch从SubView设置位置

时间:2011-10-26 06:40:04

标签: c# .net uiview xamarin.ios value-type

嘿,伙计们,我是MonoTouch的新手并且有问题。 谁能告诉我如何设置子视图的位置? 我试过这个:

UIImageView imageview = new UIImageView(this.ImageSource);

this.AddSubview(imageview);

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

我希望你们中的任何人都可以帮助我。

由于

2 个答案:

答案 0 :(得分:6)

BoundsFrame旁边(由@Krumelur提及)代码中存在.NET问题。

RectangleF是值类型(struct),而不是引用类型。如果不创建新实例(直接或间接),则无法在.NET中更改其属性/字段;

即。 Bounds的属性getter将始终返回一个新实例。因此,您在不同于Subviews[0]正在使用的实例上完成30的分配。

<强>证明:

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(struct)实例被分配回Bounds属性(使用您设置的新值)。

答案 1 :(得分:2)

Bounds属性为您提供了视图的边界。 如果要重新定位,请使用:

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

yourView.Center = new PointF(newCenterX, newCenterY)