Ale*_*lex 2 .net c# value-type uiview xamarin.ios
嘿伙计们我是MonoTouch的新手并且有问题.谁能告诉我如何设置子视图的位置?我试过这个:
UIImageView imageview = new UIImageView(this.ImageSource);
this.AddSubview(imageview);
this.Subviews[0].Bounds.X = 30;
Run Code Online (Sandbox Code Playgroud)
我希望你们中的任何人都可以帮助我.
谢谢
在@Krumelur 旁边Bounds或Frame(由@Krumelur提到)代码中存在.NET问题.
RectangleF是值类型(struct),而不是引用类型.如果不创建新实例(直接或间接),则无法在.NET中更改其属性/字段;
即属性getter Bounds将始终返回一个新实例.因此,您在不同于Subviews[0]正在使用的实例上完成30的分配.
证明:
Console.WriteLine (Object.ReferenceEquals (this.Subviews[0].Bounds,
this.Subviews[0].Bounds)); // prints 'False'
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下你需要做的是:
var bounds = this.Subviews[0].Bounds;
bounds.X = 30.0f;
this.Subviews[0].Bounds = bounds;
Run Code Online (Sandbox Code Playgroud)
因此新的RectangleF(struct)实例被分配回Bounds属性(使用您设置的新值).