MonoTouch Установить положение из SubView - PullRequest
2 голосов
/ 26 октября 2011

Эй, ребята, я новичок в MonoTouch и у меня есть проблема.Может кто-нибудь из вас подскажет, как установить Позицию подпредставления?Я попробовал это:

UIImageView imageview = new UIImageView(this.ImageSource);

this.AddSubview(imageview);

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

Я надеюсь, что любой из вас может мне помочь.

Спасибо

Ответы [ 2 ]

6 голосов
/ 26 октября 2011

Рядом с Bounds или Frame (упомянутым @Krumelur) в вашем коде есть проблема .NET.

RectangleF - это тип значения (структура), а не ссылочный тип. Вы не можете изменить их свойства / поля в .NET без создания нового экземпляра (прямо или косвенно);

т.е. получатель свойства для Bounds будет всегда возвращать новый экземпляр. Таким образом, вы назначаете 30 для экземпляра, отличного от того, который используется 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 (struct) возвращается обратно свойству Bounds (с новым заданным значением).

2 голосов
/ 26 октября 2011

Свойство Bounds дает вам границы представления.Если вы хотите изменить положение, используйте:

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

или

yourView.Center = new PointF(newCenterX, newCenterY)
...