分配框架的正确方法

Posted

技术标签:

【中文标题】分配框架的正确方法【英文标题】:Proper way of assigning frame 【发布时间】:2012-12-06 15:51:19 【问题描述】:

我正在开发一个应用程序,当用户单击按钮时,视图将在其下方显示一个视图,视图高度取决于某些标准。它将是某个 x 高度或 y 高度,没有其他高度。现在我的问题是,为该视图分配高度的正确方法是什么,我应该根据标准对其进行硬编码还是每次都应该根据放置的内部视图计算高度。如果我每次都计算高度,那么现在它是无用的,因为我们知道高度应该是多少,但将来可能会发生 UI 更改,因此高度可能会更改。 我想知道你们的想法,正确的方法是什么?

提前致谢!

【问题讨论】:

听起来像是 NSSplitterView 的工作? 【参考方案1】:

只要视图布局不变,我就会使用硬编码值。即使稍后会发生变化,我也会首先使用硬编码值,然后在真正需要时,我会将实现更改为动态值。我的逻辑背后的原因是,在真正需要之前,条件可能会很快发生变化,因此即使您现在实现动态实现,您也不能确定在真正需要时不需要再次更改它,因为在那之前的规格变化,例如

【讨论】:

感谢@Pfitz,您的回答。是的,同意,如果将来,规格更改我需要更改 UI。【参考方案2】:

我混合了硬编码和计算:

为了计算视图的位置,我定义了硬编码插入:

CGFloat topInset = 5;
CGFloat bottomInset = 5;

CGFloat leftInset = 5;
CGFloat interButtonDistance = 10;

然后我通过以下方式计算子视图框架的位置:

CGFloat startX = 0;
CGFloat startY = 0;

CGFloat buttonSize = 50;

CGFloat buttonX = leftInset + column * (buttonSize + interButtonDistance);

此外,我不使用硬编码的屏幕尺寸,我阅读了它们

   CGFloat height = self.view.frame.size.height; // or similar

然后我可以在视图底部放置一个按钮

buttonY = height - buttonHeight - bottomInset;

使用此技术,您可以更加独立于 iphone / ipad 屏幕高度。 在具有不同屏幕尺寸(iphone 5)的设备中使用时仍然需要调整值,但这会更容易,希望您只需调整 topInset 和 boittomInset,其余的工作开箱即用(希望如此)

【讨论】:

以上是关于分配框架的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Anylogic 中为代理参数分配不同值的正确方法是啥?

在动态分配的数组上使用 auto_ptr 的正确方法是啥?

将多个分层数据模板分配给 TreeView ItemTemplate 的正确方法是啥?

分配数据以传递给 FFI 调用的正确方法是啥?

如果程序因错误而提前退出,那么释放动态分配的内存的正确方法是啥?

在 C++ 中,对具有唯一 ID 的对象进行复制/移动/分配的正确方法是啥?