Размеры рамки Monotouch не могут быть установлены напрямую? - PullRequest
1 голос
/ 12 мая 2011

Редактирование свойств фрейма пользовательского интерфейса напрямую не работает.

т.е.

scrollView.ContentSize.Width = 100;

не работает, но

RectangleF scrollFrame = ScrollView.Frame;
scrollFrame.Width = width * pageCount;
ScrollView.ContentSize = scrollFrame.Size;

делает! Почему это? Разве Монотуш не должен защищать против тайных стилей программирования?

1 Ответ

4 голосов
/ 12 мая 2011

Это базовое поведение C #.

Свойство ContentSize представляет собой SizeF, который представляет собой структуру (= ​​тип значения), а не класс (= ссылочный тип).

Calling

scrollView.ContentSize.Width = 100;

не работает, поскольку вы устанавливаете значение для свойства скопированного объекта.

Calling

scrollFrame.Width = width * pageCount;

работает, потому что, хотя RectangleF также является структурой, вы устанавливаете значение для реального объекта.

Аналогично,

ScrollView.ContentSize = scrollFrame.Size;

создает копию, но устанавливает новый объект после '=' и работает правильно.

...