【问题标题】:objective-c framesObjective-C 框架
【发布时间】:2011-04-16 04:59:36
【问题描述】:

为什么这是一个糟糕的任务?

abstractionView.frame.origin.y = emptyFrameView.frame.origin.y;

编译器抱怨...需要左值作为赋值的左操作数

【问题讨论】:

  • 来自 Stack Overflow 的常见问题解答:“当您确定哪个答案对您最有帮助时,通过单击答案左侧的复选框轮廓将其标记为已接受的答案。这可以让其他人知道您的问题得到了很好的回答。这样做很有帮助,因为它向其他人表明您从社区中获得了价值。 (如果你不这样做,人们通常会礼貌地要求你返回并接受更多问题的答案!)'

标签: iphone objective-c macos


【解决方案1】:

我从来没有完全清楚为什么直接分配给CGRect 结构的成员不起作用(除了需要知道任何CGRect 的成员值何时发生变化的更高级别的关注,即用于定位渲染元素),但解决此问题的方法是执行以下操作:

CGRect original = abstractionView.frame;
abstractionView.frame = CGRectMake(original.origin.x, emptyFrameView.frame.origin.y, original.size.width, original.size.height);

这有点痛苦,我知道。也许其他人可以更好地解释为什么首先需要这样做。

【讨论】:

  • 在适用时尝试将点表示法转换为相应的 getter 和 setter。
  • @Bavarious - 但不适用于 CGRect,因为它是 struct 并且没有/不能有任何访问器方法。
  • 我的观点完全正确。 a.frame.origin.y = n 等价于 [a frame].origin.y = n,其左侧不是左值,因此在这种情况下,为什么直接分配给 CGRect 结构的成员不起作用。它试图通过方法为CGRect 结构的成员分配一个值返回
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 2011-09-23
相关资源
最近更新 更多