Monotouch框架尺寸不能直接设置?

时间:2011-05-12 10:36:03

标签: uiscrollview xamarin.ios

直接编辑UI框架属性似乎不起作用。

scrollView.ContentSize.Width = 100;

不起作用,但

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

确实!为什么是这样?不是Monotouch应该保护 反对神秘的编程风格?

1 个答案:

答案 0 :(得分:4)

这是基本的C#行为。

ContentSize属性是一个SizeF,它是一个struct(= value type)而不是一个class(= reference type)。

调用

scrollView.ContentSize.Width = 100;

不起作用,因为您要在复制对象的属性上设置值。

调用

scrollFrame.Width = width * pageCount;

有效,因为虽然RectangleF也是一个结构,但你要在实际对象上设置一个值。

同样地,

ScrollView.ContentSize = scrollFrame.Size;

创建一个副本,但在'='之后设置一个新对象并正常工作。