我有一款iPhone游戏,我希望将项目转换为通用项目。事实上,我已经通过调整目标已经这样做了。 问题是:例如,UIButtons不会调整大小并且不会重新定位。
问题:创建按钮的正确方法是什么?如果通用应用程序在Pad上运行,它会自动调整其大小?
目前我正在制作这样的按钮:
[self setSettingsButton:[UIButton buttonWithType:UIButtonTypeCustom]];
[settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
[settingsButton setBackgroundImage:[UIImage imageNamed:@"SettingsButton.png"] forState:UIControlStateNormal];
[settingsButton addTarget:self action:@selector(prefButtonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:settingsButton];
嗯,是的,很明显,当他们应该是相对的时候,位置和大小是绝对的,但我的问题是:如何使他们相对?
非常感谢你的帮助!
答案 0 :(得分:2)
在这种情况下我看到两种方式:
1)
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
[settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
}
else {
[settingsButton setFrame:CGRectMake(131, 145, 60, 250)]; // your iPad values
}
2)
CGRect bounds = self.view.bounds; // Here we get VC views frame size
CGRect buttonFrame = CGRectZero;
buttonsFrame.origin.x = bounds.size.width * 1.0/3.0; // Yours calculations
buttonsFrame.origin.y = bounds.size.width * 4.0/5.0; //
buttonsFrame.size.width = 240; //
buttonsFrame.size.height = 300; //
[settingsButton setFrame:buttonsFrame];
希望这会有所帮助!
答案 1 :(得分:1)
您可以使用zapko建议的if / else路径,也可以在项目设置中为每个设备设置主窗口。这至少可以让你在if / else块之外隔离设备的代码,根据我的经验,维护起来比较干净。
您是否也考虑过Retina显示屏?我认为当您在标准显示器和Retina显示器上进行测试时,同样的问题也会出现。由于您正在创建游戏,因此这可能不是一个选项,但通过IB向您的视图添加按钮将使应用程序能够跨屏幕扩展。
答案 2 :(得分:0)
你必须设计iphone以及ipad是最好的选择。另外你必须检查设备是iphone或ipad([UIDevice currentDevice] .model)然后你必须为两个设置框架
答案 3 :(得分:0)
if ([UIDevice currentDevice].model == iPhone) {
[settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
}
else {
[settingsButton setFrame:CGRectMake(131, 145, 60, 250)];
}
或
创建一个你必须为iphone页面和ipad页面设计的通用应用程序。