Как использовать Autolayout программно, чтобы дать вертикальное пространство между представлениями?

В моем приложении я должен расположить два представления по вертикали в соответствии с каждым и хочу убедиться, что они выглядят одинаково на iPhone 4 и 5. Вот код:

nextShowView = [[WestwoodNextShowView alloc]initWithFrame:CGRectMake(-5, 322, 290, 70)];
    nextShowView.staticLabel.text = @"Next Show";
    nextShowView.date.text = @"10/25";
    nextShowView.address.text = @"Green Dot Tavern";
    nextShowView.cityState.text = @"Detroit, MI";
    [_aboutScroll addSubview:nextShowView];

    playerView = [[WestwoodMusicPlayerView alloc]initWithFrame:CGRectMake(0, 407, 320, 50)];
        [_aboutScroll addSubview:playerView];

    NSDictionary * viewsDict = NSDictionaryOfVariableBindings(nextShowView, playerView);
    NSArray * constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[nextShowView]-15-[playerView]-20-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:viewsDict];
    [_aboutScroll addConstraints:constraints];

То, что я пытался сделать, это дать 15-точечное пространство между nextShowView и playerView и 20-точечное пространство от нижней части playerView до нижнего края представления.

Пожалуйста помоги !!!!

Спасибо,


person Ashutosh    schedule 24.04.2013    source источник


Ответы (1)


Автомакет работает только в том случае, если вы предоставляете все ограничения, необходимые каждому представлению для его полного определения. Вы должны указать не только вертикальное расстояние между nextShowView и playerView, не только вертикальное расстояние между playerView и супервизором, но и их высоту, а также их горизонтальное положение и ширину.

Если ваши представления не появляются там, где вы ожидаете, вы, вероятно, задали недостаточные ограничения. Сделайте паузу в отладчике и произнесите po [[UIWindow keyWindow] _autolayoutTrace] в командной строке консоли, чтобы убедиться, что у вас неоднозначный макет.

person matt    schedule 24.04.2013