6

ルートView Controller(またはプッシュされたView Controller)として使用可能なスペースを自分のビューで埋める方法が見つかりませんでしたUINavigationController. ここで AutoLayout を使用しようとしていますが、それが問題であるとは思えません。私のアプリデリゲートで

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ViewController *viewController = [[ViewController alloc] init];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.window.rootViewController = navigationController;

    [self.window makeKeyAndVisible];

    return YES;
}

そして私の中でViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.translatesAutoresizingMaskIntoConstraints = NO;
    // Do any additional setup after loading the view, typically from a nib.

    UILabel *companyLabel = [[UILabel alloc] init];
    companyLabel.translatesAutoresizingMaskIntoConstraints = NO;
    companyLabel.text = @"We Build It";
    companyLabel.backgroundColor = [UIColor redColor];

    [self.view addSubview:companyLabel];

    NSDictionary *views = NSDictionaryOfVariableBindings(companyLabel);

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[companyLabel]" options:0 metrics:@{} views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[companyLabel]" options:0 metrics:@{} views:views]];
}

また、ラベルは左上にバインドされるのではなく、画面の中央に配置されます。これは、使用可能なスペースを埋めるのではなく、ビューが画面の中央に配置されるためです。

4

1 に答える 1

8

次の行を削除してみてください。

self.view.translatesAutoresizingMaskIntoConstraints = NO;

これにより、ビュー コントローラー ビューは、デフォルトの自動サイズ変更マスクに従って、幅と高さをすべて持つことができます。これは私が得たものです(ビューの背景色を緑に設定しました):

ここに画像の説明を入力

上記の行がまだ追加されている場合、これが得られます (緑色の痕跡がないため、ビューがどこにも見つからないことを意味しているようです):

ここに画像の説明を入力

于 2013-06-30T01:57:43.497 に答える