Monotouch Frame尺寸不能直接设置吗?
直接编辑 UI Frame 属性似乎不起作用。
ie
scrollView.ContentSize.Width = 100;
不起作用,但
RectangleF scrollFrame = ScrollView.Frame;
scrollFrame.Width = width * pageCount;
ScrollView.ContentSize = scrollFrame.Size;
可以!这是为什么呢?难道 Monotouch 不应该保护 反对神秘的编程风格?
Editing UI Frame properties directly don't seem to work.
i.e.
scrollView.ContentSize.Width = 100;
doesn't work but
RectangleF scrollFrame = ScrollView.Frame;
scrollFrame.Width = width * pageCount;
ScrollView.ContentSize = scrollFrame.Size;
does! Why is this? Isn't Monotouch supposed to protect
against arcane programming styles?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是基本的 C# 行为。
ContentSize 属性是 SizeF,它是结构(=值类型)而不是类(=引用类型)。
调用
不起作用,因为您正在为复制对象的属性设置值。
调用
之所以有效,是因为尽管 RectangleF 也是一个结构体,但您正在实际对象上设置一个值。
同样,
创建一个副本,但在“=”后设置一个新对象并正常工作。
This is basic C# behavior.
The ContentSize property is a SizeF which is a struct (=value type) and not a class (=reference type).
Calling
does not work because you are setting a value on a property of a copied object.
Calling
works because although RectangleF is also a struct, you are setting a value on the actual object.
Likewise,
creates a copy, but sets a new object after the '=' and works correctly.