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 制約を追加できますか? これらの制約をプログラムで作成する最も簡単な方法は何ですか?


編集:私が達成したいこと:

  • プロパティを取得する
  • ストーリーボードでこの特定の ViewController の autoLayout を無効にします
  • 上記のチェックで制約を手動で追加します。

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 用に 1 つのバージョンを設定します。

        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 ロジックをメソッド ロジックに置き換えても、同じように動作するはずです。ビューごとに 1 つずつ、2 つのメソッドを作成し、if (result.height ==) に追加します。これをviewControllerで直接行うか、シングルトンクラスで行うかはあなた次第です。

于 2013-01-04T13:56:58.403 に答える