0

我正在创建一个 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 约束吗?以编程方式创建这些约束的最简单方法是什么?


编辑:我想要实现的目标:

  • 获取我的属性
  • 在 Storyboard 中停用此特定 ViewController 的自动布局
  • 在上面的检查中手动添加约束。

这是我在 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;
4

1 回答 1

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;

编辑:

首先,我认为您不能禁用特定视图控制器的自动布局。其次,如果你用方法逻辑替换我上面答案中的 rect 逻辑,它应该仍然可以工作。制作两个方法,每个视图一个,并将它们添加到 if (result.height ==) 中。是否要直接在 viewController 或单例类中执行此操作取决于您。

于 2013-01-04T13:56:58.403 回答