直接编辑UI框架属性似乎不起作用。
即
scrollView.ContentSize.Width = 100;
不起作用,但
RectangleF scrollFrame = ScrollView.Frame;
scrollFrame.Width = width * pageCount;
ScrollView.ContentSize = scrollFrame.Size;
确实!为什么是这样?不是Monotouch应该保护 反对神秘的编程风格?
答案 0 :(得分:4)
这是基本的C#行为。
ContentSize属性是一个SizeF,它是一个struct(= value type)而不是一个class(= reference type)。
调用
scrollView.ContentSize.Width = 100;
不起作用,因为您要在复制对象的属性上设置值。
调用
scrollFrame.Width = width * pageCount;
有效,因为虽然RectangleF也是一个结构,但你要在实际对象上设置一个值。
同样地,
ScrollView.ContentSize = scrollFrame.Size;
创建一个副本,但在'='之后设置一个新对象并正常工作。