我正在创建一个iPhone应用程序。该应用程序已开发适合4英寸屏幕。现在我必须添加对3.5英寸屏幕的支持。我有一些自动调整的视图,例如UITableViews
。但是,我还有一个包含Interface Builder中许多对象的视图。
使用这段代码,我检查屏幕是3.5还是4英寸:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
// iPhone Classic
NSLog(@"iPhone with 3.5 Inch screen");
}
if(result.height == 568)
{
// iPhone 5
NSLog(@"iPhone with 4 Inch screen");
}
}
我可以在此代码检查中从故事板中为此特定ViewController 添加IB约束吗?以编程方式创建这些约束的最简单方法是什么?
编辑: 我想要实现的目标:
以下是我在ViewControllers .h文件中定义的属性列表:
@property (nonatomic, assign) NSInteger selectedIndex;
@property (nonatomic, retain) AbstractActionSheetPicker *actionSheetPicker;
@property (weak, nonatomic) IBOutlet UITextField *workerField;
@property (weak, nonatomic) IBOutlet UITextField *dateField;
@property (nonatomic, retain) NSMutableArray *workers;
@property (nonatomic, retain) NSDate *selectedDate;
@property (nonatomic, retain) IBOutlet UISwitch *cutSwitcher;
@property (nonatomic, retain) IBOutlet UISwitch *colorSwitcher;
@property (nonatomic, retain) IBOutlet UISwitch *waveSwitcher;
@property (nonatomic) BOOL internetActive;
@property (nonatomic) BOOL hostActive;
答案 0 :(得分:0)
为Xib文件中的所有对象设置CGRect。为iPhone 4设置一个版本,为iPhone 5设置另一个版本。
CGSize result = [[UIScreen mainScreen] bounds].size;
CGRect master;
if(result.height == 480)
{
// iPhone Classic
NSLog(@"iPhone with 3.5 Inch screen");
CGRect classic = CGRectMake(0,0,0,0);
master = classic;
}
if(result.height == 568)
{
// iPhone 5
NSLog(@"iPhone with 4 Inch screen");
CGRect iPhone5 = CGRectMake(0,0,0,0);
master = iPhone5;
}
someView.frame = master;
编辑:
首先,我认为您不能禁用特定viewController的自动布局。其次,如果你用我的方法逻辑替换上面的答案中的rect逻辑,它应该仍然有效。制作两个方法,每个视图一个,并在if(result.height ==)中添加它们。是否要直接在viewController或单例类中执行此操作取决于您。