0

寸法が 1024(W) x 768(H) のサブビューをビュー コントローラーに追加しています。私のアプリは、plist で横向きのみをサポートするように設定されていますが、サブビューは常に縦向きで表示され、下部が画面から消えます。

私のスーパービュー:

#import "TSTViewController.h"
#import "TSTContentViewController.h"

@interface TSTViewController ()
@property (nonatomic, strong) TSTContentViewController *tcvc;
@end

@implementation TSTViewController

- (void)loadView
{
    UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f)];
    [rootView setBackgroundColor:[UIColor yellowColor]];
    self.view = rootView;
    _tcvc = [[TSTContentViewController alloc] initWithNibName:@"TSTContentViewController" bundle:nil];
    [rootView addSubview:_tcvc.view];
}

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"H:%f W:%f; H:%f W:%f", self.view.frame.size.height, self.view.frame.size.width, _tcvc.view.frame.size.height, _tcvc.view.frame.size.width);
}

@end

私のアプリのデリゲート:

#import "TSTAppDelegate.h"

#import "TSTViewController.h"

@implementation TSTAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[TSTViewController alloc] init];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

@end

私のサブビュー (TSTContentViewController) にはカスタム コードがなく、寸法 (1024W X 768H) のペン先があり、背景が灰色です。

一見無条件に、結果は次のようになります。

(黄色のスーパービュー、灰色のサブビュー) ここに画像の説明を入力

viewDidAppear の NSLog は、実際には横向きのように見える黄色のビューでも、両方のビューが縦向きの寸法を持っていることを出力します。

何か案は?

詳細については編集してください:

サブビューの幅が 1 ピクセルだけ小さい場合、ビューは横向きになります (下の薄い黄色の帯を参照)。

ここに画像の説明を入力

私の観察によると、このサブビューの回転は、正確にフルスクリーンでのみ発生します。小さいフレームと大きいフレームは、ペン先で定義された寸法を保持します。

4

1 に答える 1

0

自動レイアウトを使用する場合は、サブビューにいくつかの制約を追加するだけです:

- (void)loadView
{
    UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f)];
    [rootView setBackgroundColor:[UIColor yellowColor]];
    self.view = rootView;
    TSTContentViewController* _tcvc = [[TSTContentViewController alloc] initWithNibName:@"TSTContentViewController" bundle:nil];
    [self.view addSubview:_tcvc.view];
    [_tcvc.view setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[view]|" options:0 metrics:nil views:@{@"view":_tcvc.view}]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:@{@"view":_tcvc.view}]];
}
于 2013-03-19T19:24:45.813 に答える