我想知道在使用固定值设置neb中我的视图的高度时是否会遇到麻烦。
示例:状态栏的高度已知。这是20个单位。因此,当制作一个显示一个漂亮界面的视图时,当用户在使用App时接听电话时会发生什么,并且状态栏的高度会增加?或者,如果Apple将来某天改变状态栏或标签栏的高度会怎么样?
您是否始终对容器视图使用自动调整功能,其中包含所有界面元素?你的模式是什么?
答案 0 :(得分:7)
我会避开状态栏,工具栏等高度的硬编码值到您的程序中。您提供了一些很好的示例,说明这些值是如何动态的,并且可以在将来发生变化。您可能支持或不支持的另一个常见方案是用户将iPhone旋转到横向方向的能力。
我总是尝试以保持容器子视图的布局灵活。使用自动调整功能是一种很好的方法。你的问题很好,我想它会让我回顾一下我自己的布局策略!
答案 1 :(得分:4)
我总是使用灵活的布局自动调整大小,因为这样可以让我专注于设计并让计算机算出数学。
[编辑]我的理由是事情会发生变化,在这种情况下我不想再做数学。可以改变的事情:
因此,如果您将布局设为静态,您最终必须再次执行此操作。然后再次。直到你了解到软件开发中唯一不变的是变化。
答案 2 :(得分:3)
好吧,我在这里走出困境,但我认为硬编码布局尺寸(今天在iPhone上,以像素为单位)的想法理论上会让你陷入困境(或至少制作未来的额外工作。
我不太关心他们改变状态栏的表观大小,或默认标签栏或导航栏......我担心单位会发生变化。我不是注册的OS X开发人员,但长期以来一直有传言说Snow Leopard将支持一种独立于分辨率的方式来指定接口,而不是基于像素。
这不会发生在明天,或者在3.0,甚至可能在明年,但这种独立于分辨率的界面的想法将会转向iPhone,特别是随着显示尺寸(更具体地说,显示分辨率)的变化在将来。
我啰嗦,但这不是状态栏的大小我关注未来的变化,它是设备的大小,以及我们用来指定Cocoa Touch尺寸的单位。
答案 3 :(得分:1)
要考虑的一件事:如果用户接到电话,然后在通话期间启动应用程序,状态栏的高度将会改变。因此,在系统UI元素的高度避免硬编码肯定是必要的。
答案 4 :(得分:1)
在UICatalog示例中有一个“constants.h”,但它是该样本的本地,显然只是样本开发人员让他/她的生活更轻松的一种方式。它带有上面提到的所有问题......如果将来“标准尺寸”有任何改变,这个样本就会停止正常工作。
很难查询其他对象以使您的展示位置正确,但这是您在环境发生变化时确保正常工作的方式。不断扩大的“通话中”状态栏就是一个很好的例子。如果您硬编码20“单位”以避开状态栏,则您的应用会在通话中断开。并且,这是你在模拟器中不太可能注意到的事情(因为,如果你想到它在模拟器中尝试该选项,你可能会在编写应用程序时考虑过它!)
答案 5 :(得分:0)
Apple提供的文件“Constants.h”中是否存在大部分这些大小? (我刚才注意到它是UICatalog SDK示例的一部分。)
我认为Apple很可能会在某个时间推出另一款设备,它有更大或更小的屏幕。所以它们应该与[UIScreen frame / bounds];
一起使用// these are the various screen placement constants used across all the UIViewControllers
// padding for margins
#define kLeftMargin 20.0
#define kTopMargin 20.0
#define kRightMargin 20.0
#define kBottomMargin 20.0
#define kTweenMargin 10.0
// control dimensions
#define kStdButtonWidth 106.0
#define kStdButtonHeight 40.0
#define kSegmentedControlHeight 40.0
#define kPageControlHeight 20.0
#define kPageControlWidth 160.0
#define kSliderHeight 7.0
#define kSwitchButtonWidth 94.0
#define kSwitchButtonHeight 27.0
#define kTextFieldHeight 30.0
#define kSearchBarHeight 40.0
#define kLabelHeight 20.0
#define kProgressIndicatorSize 40.0
#define kToolbarHeight 40.0
#define kUIProgressBarWidth 160.0
#define kUIProgressBarHeight 24.0
// specific font metrics used in our text fields and text views
#define kFontName @"Arial"
#define kTextFieldFontSize 18.0
#define kTextViewFontSize 18.0
// UITableView row heights
#define kUIRowHeight 50.0
#define kUIRowLabelHeight 22.0
// table view cell content offsets
#define kCellLeftOffset 8.0
#define kCellTopOffset 12.0
贝