我在.xib
进行了简单的设计,我的应用的部署目标是 iOS 5
当我在模拟器或设备中运行我的应用程序时,我的视图不会调整大小。
这是我的.xib
文件的快照..
当我尝试在模拟器中运行我的应用程序时,它在4英寸的模拟器中正常运行,但它不会调整大小,当我在3.5英寸的模拟器中运行我的应用程序时。 自动调整子视图属性已被选中。
以下是我Simulaotrs
的快照,第一张截图是3.5英寸,第二张截图是4英寸..
提前致谢。
答案 0 :(得分:7)
你可以使用你的.xib文件中的下一个设置(416 = 480 - 20(状态栏的宽度) - 44(导航栏的宽度)
如果你想在iPhone 5的顶部显示图标,请使用下一个图标设置:
如果你想在iPhone 5底部的图标使用图标的下一个设置:
答案 1 :(得分:5)
如果您想自动调整尺寸并自动订购引用上部视图的图标,请尝试使用布局标签播放
或为每个布局创建自己的.xib;)
答案 2 :(得分:3)
检查您是否取消选中.xib
文件中的Autolayout选项..
答案 3 :(得分:2)
我想用一个按钮网格实现类似的效果。我想你会发现iOS 5支持的自动化功能根本就不会这样做。最后我有两个故事板,一个用于iOS 6设备,另一个用于iOS 5.我的App Delegate然后检查主视图是否响应了UIView的constraints
方法(它告诉你它是否支持新的iOS 6基于约束的布局)并加载了相关的Storyboard。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中的类似内容:
if (![self.window.rootViewController.view respondsToSelector:@selector(constraints)]) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_BC_iPhone" bundle:nil];
UITabBarController *rootController = [storyboard instantiateInitialViewController];
[self.window setRootViewController:rootController];
}
默认情况下会加载iOS 6 Storyboard,但如果需要,可以使用向后兼容的那个覆盖它。向后兼容的Storyboard只能手动设置为3.5英寸显示器,因为iPhone 5只能运行iOS 6,因此向后兼容的Storyboard不需要在4英寸显示器上运行。
设置向后兼容的Storyboard没多久 - 只需复制使用约束的iOS 6,然后将其设置为3.5“显示,关闭约束并修复视图。
另一种方法是根据屏幕尺寸以编程方式布局图标。这样做的好处是你可以设计它以适应任何屏幕尺寸,但缺点是这可能需要更多的努力。
[编辑]
注意到你使用的是.xib而不是故事板,但理论是一样的。检查UIView是否响应constraints
,然后相应地加载相应的NIB(.xib)文件。
答案 4 :(得分:2)
解决方案非常简单
在超级视图上添加UIVIew,然后像这样将所有图标添加到它们上面
(注意从导航控制器到标签栏的视图大小)
此子视图(具有您的图标的那个)应具有这些自动调整遮罩
答案 5 :(得分:2)
您可以从Ray WenderLich example获取参考资料。非常简单的解释autoLayout以及它的例子。它将描述你所犯错误的每一行。如果你启用了Autolayout,那么在选择View时左边的约束必须显示。
答案 6 :(得分:1)
我认为你有几个选择,具体取决于你的布局设置方式以及解决方法。
如果您使用的是Autolayout,则会对您的元素设置Contraints,即使您使用resize,也可能无法在视图中显示所有元素。他们只是不适合。因此,在这种情况下,我建议您使用480分辨率的滚动视图,以便能够显示您的视图。
在你的.h文件中,为你的观点制作一个IBOutlet:
@property (strong, nonatomic) IBOutlet UIView *contentView;
在你的.m文件中,设置如下。
//Add scrollview
UIScrollView *scrollView=(UIScrollView *)self.view;
scrollView.contentSize=self.contentView.frame.size;
[self.view addSubview:self.contentView];
使您可以将元素放置在不同间距等任何位置的另一项工作是创建两个不同的.xib文件,并在ViewController中将其设置为:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
if([UIScreen mainScreen].bounds.size.height == 568.0)
{
//Use iPhone5 VC
self = [super initWithNibName:@"RootViewController-568h" bundle:nibBundleOrNil];
}
else{
//Use Default VC
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}
}
return self;
}
如果您调用ViewController RootViewController
,这就是如果他们决定在即将推出的iPhone5s或iPhone6上扩展屏幕尺寸,那么您就是安全的。它看起来不会很好但至少它不会使应用程序崩溃。