3

タブバーといくつかのタブを備えたIBで作成されたアプリがありますが、タブビューの1つに、自動的にサイズ変更(拡大)できない背景画像があります。ビューには背景の後ろに隠された12個のボタンがあり、ボタンの位置は背景ごとに変更する必要があります。

XIBファイルをコピーし、XIBを編集して568ピクセルの背景画像を選択し、それに応じてボタンをページの下に再配置することを考えています。次に、実行時に、iPhone 5で568ピクセルを選択するコードを追加したいと思います(iPhone x / 5の選択は問題ではありません)」。

最後に、すべてのコードが共通であるため、同じView Controllerと接続(可能な場合)を使用したいと思います。それは可能ですか?XIBを作成し、タブを選択したときに表示されるようにするにはどうすればよいですか。

4

1 に答える 1

4

画面の高さを確認し、プログラムで使用するxibを選択できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    MyFirstViewController *vc1 = nil;
    MySecondViewController *vc2 = nil;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        if(screenSize.height == 568) {
            vc1 = [[MyFirstViewController alloc] initWithNibName:@"LargeFirstViewController" bundle:nil];
            vc2 = [[MySecondViewController alloc] initWithNibName:@"LargeSecondViewController" bundle:nil];
        }
        if(screenSize.height == 480) {
            vc1 = [[MyFirstViewController alloc] initWithNibName:@"SmallFirstViewController" bundle:nil];
            vc2 = [[MySecondViewController alloc] initWithNibName:@"SmallSecondViewController" bundle:nil];
        }
    }
    else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        // ... Add iPad code here if relevant.
    }

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[vc1, vc2];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

タブバーアイコンの画像をプログラムで変更するには、View Controllerで次の画像を編集します(「YOUR-IMAGE」を実際の名前に置き換えます...拡張子(.pngなど)を付けないでください)。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.tabBarItem.image = [UIImage imageNamed:@"YOUR-IMAGE"];
    }
    return self;
}

新しいxibファイルを作成するときは、「ファイル所有者」(「プレースホルダー」の下)を選択し、「カスタムクラス」を属性インスペクターで実際のビューコントローラークラスに設定することを忘れないでください。また、「ファイル所有者」を選択した状態で、「接続インスペクター」に移動し、「ビュー」アウトレットをxibのトップレベルビューにドラッグします。

于 2012-10-30T19:33:02.897 に答える