0

私はiOS開発の初心者です。タブ バー コントローラーを使用するアプリケーションを開発しています。プログラムでタブ バー コントローラーのフレームを設定していますが、iPhone 5 に切り替えると、タブ バー項目とメイン ビューの間に空白が作成されます。以下は、iPhone 5 シミュレーターでのアプリケーションのスクリーン ショットです。

4.5 Retina ディスプレイ シミュレーターのスクリーン ショット

以下は、フレームを設定しているコード行ですUITabBarController

[rootTabBarController.view setFrame:CGRectMake(0,-20,320, 480)];
4

4 に答える 4

1

このコード行を入れてチェックしてください。それに応じてフレームを設定する必要があります。

 

if ([[UIScreen mainScreen] bounds].size.height == 568)
     {

       [rootTabBarController.view setFrame:CGRectMake(0,0,320, 568)];
     }
 else
     {
        [rootTabBarController.view setFrame:CGRectMake(0,0,320, 480)];
     }
于 2013-04-25T12:32:55.757 に答える
0

これは、以前の iPhone と iPhone 5 の高さの違いによるものです。

これは、次の 2 つの方法で解決できます。

iPhone 5 で実行している場合は、フレーム サイズを手動で設定します。

BOOL isIphone5 = (([[UIDevice currentDevice] userInterfaceIdiom] 
== UIUserInterfaceIdiomPhone) && (([UIScreen mainScreen].bounds.size.height) >= 568));
if(isIphone5)
{
   [rootTabBarController.view setFrame:CGRectMake(0,0,320, 568)];
}
else{
   [rootTabBarController.view setFrame:CGRectMake(0,0,320, 480)];
}

または、AutoResizingmasks を設定して、ビューを新しい画面サイズまたは向きに自動サイズ変更することもできます (自動サイズ変更の有用性は、ビューの定義方法によって異なります)。

[rootTabBarController.view setAutoResizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
于 2013-04-25T12:37:25.763 に答える
0

デバイスの解像度に応じてフレームを調整する必要があります。私たちが知っているように、iPhone 5 の画面サイズは (320,568) であるため、iPhone 5 (4 インチ画面) を使用しているか、他の (3.5 インチ画面) を使用しているかを確認できます。

#define IS_IPHONE ( [[[UIDevice currentDevice] model] isEqualToString:@"iPhone"])
#define IS_HEIGHT_GTE_568 [[UIScreen mainScreen ] bounds].size.height >= 568.0f
#define IS_IPHONE_5 ( IS_IPHONE && IS_HEIGHT_GTE_568 )

フレームを次のように設定します

[rootTabBarController.view setFrame:CGRectMake(0,-20,320,IS_IPHONE_5?568.0f:480.0f)];

お役に立てば幸いです。

于 2013-04-25T12:38:15.647 に答える
0

just.dont.do.it (フレームを設定しない) !!!

最もシンプルでクリーンなテクニックは次のとおりです。

YourAppDelegate.h:

@property(nonatomic,retain) UITabBarController * tabBarController;

YourAppDelegate.m:

@synthesize tabBarController;
#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];

UINavigationController      *viewController1 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

UINavigationController      *viewController2 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

self.tabBarController.viewControllers = @[viewController1, viewController2];
self.tabBarController.customizableViewControllers = nil;

self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];


return YES;

}

そして、すべてがうまくいくでしょう。フレーム、回転、自動サイズ変更、iPhone、iPad など。

ところで、Xcode で「Tab Bar application」テンプレートを使用して新しいプロジェクトを作成し、Apple がどのようにそれを行うかを確認できます。

および..(将来的に役立つアドバイス)UITabBarControllerは、正しい回転などのためにビュー階層の最上位(UIWindow上)にある必要があります。私のサンプルコードにはそれが含まれています(将来的に時間を節約できます)

于 2013-04-25T12:35:07.803 に答える