嘿,伙计们,我是MonoTouch的新手并且有问题。 谁能告诉我如何设置子视图的位置? 我试过这个:
UIImageView imageview = new UIImageView(this.ImageSource);
this.AddSubview(imageview);
this.Subviews[0].Bounds.X = 30;
我希望你们中的任何人都可以帮助我。
由于
答案 0 :(得分:6)
在Bounds
或Frame
旁边(由@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)