2013-10-28 2 views
0

Я пытаюсь реализовать динамический макет с использованием ограничений автоопределения; для этой цели я создал 3 вида контейнеров. Первый - высота 49, гибкая ширина. Второй, который имеет ширину 320 и 320, а последний - ширину ширины 69. Итак, вот код, который должен помещать каждое представление под другим.Проблемы с автоопределением программ

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(searchControlsView, workArtView, playBackControlsContainer); 
    // Position time search controls 

    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[searchControlsView]|" 
                  options:0 
                  metrics:nil 
                  views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 
    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[searchControlsView]" 
                  options:0 
                  metrics:nil 
                  views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 

    // position workArt 
    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[workArtView]|" 
                  options:0 
                  metrics:nil 
                  views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 

    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[searchControlsView]-0-[workArtView]" 
                  options:0 
                  metrics:nil 
                  views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 

    // position bottom controls 
    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[playBackControlsContainer]|" 
                  options:0 
                  metrics:nil 
                  views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 

    constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[workArtView]-(>=0)-[playBackControlsContainer]|" options:0 metrics:nil views:viewsDictionary]; 
    [self.view addConstraints:constraints]; 

То, что я хочу достичь, это последний вид будет ниже 2-го один, если это возможно, если не третий вид будет выровнена в нижней части всего экрана и перекрытия 2-го. Однако третий вид (playBackControlsContainer) не отображается на экране.

К этому я удалил все ограничения из вида. Я пробовал несколько вещей, но я только начинаю с программных ограничений, и я не могу понять, где я терпит неудачу ... кроме того, что журнал отладки имеет много дополнительных представлений и без и идентификаторов для адресов каждого элемента управления, почему мой макет может быть неоднозначным. В этом случае полезен журнал отладки.

*<UIWindow:0xc1a6510> - AMBIGUOUS LAYOUT 
| *<UILayoutContainerView:0xc1b6b50> 
| | *<UITransitionView:0xc1a3da0> 
| | | *<UIViewControllerWrapperView:0xc3b82b0> 
| | | | *<UIView:0xc1b9830> 
| | | | | *<UILayoutContainerView:0xc1ba6a0> 
| | | | | | *<UINavigationTransitionView:0xc1bf490> 
| | | | | | | *<UIViewControllerWrapperView:0xc1c5110> 
| | | | | | | | *<UIView:0xb478820> - AMBIGUOUS LAYOUT 
| | | | | | | | | *<UIView:0xb4f9d70> - AMBIGUOUS LAYOUT 
| | | | | | | | | | *<UIButton:0xb4f3e40> 
| | | | | | | | | | | <UIImageView:0xc4e7030> 
| | | | | | | | | | *<UIButton:0xb4f5440> 
| | | | | | | | | | | <UIImageView:0xc14b0a0> 
| | | | | | | | | | | *<UIButtonLabel:0xb4fb610> - AMBIGUOUS LAYOUT 
| | | | | | | | | | *<UIButton:0xb4f0e80> 
| | | | | | | | | | | <UIImageView:0xc1f00b0> 
| | | | | | | | | | | *<UIButtonLabel:0xb4fac70> - AMBIGUOUS LAYOUT 
| | | | | | | | | | *<UIButton:0xb4f04f0> 
| | | | | | | | | | | <UIImageView:0xc129480> 
| | | | | | | | | | | *<UIButtonLabel:0xb4fa2e0> - AMBIGUOUS LAYOUT 
| | | | | | | | | *<UIView:0xb478790> 
| | | | | | | | | | *<UIImageView:0xb4f9b60> 
| | | | | | | | | | *<LVStopWatchLabel:0xb479200> 
| | | | | | | | | | | <UIImageView:0xb478920> 
| | | | | | | | | *<UIView:0xb479940> 
| | | | | | | | | | *<UIButton:0xb4f6ab0> 
| | | | | | | | | | | <UIImageView:0xc4e6c00> 
| | | | | | | | | | *<UILabel:0xb479db0> 
| | | | | | | | | | *<UISlider:0xb4f5e90> 
| | | | | | | | | | | <UIView:0xc4e05e0> 
| | | | | | | | | | | | <UIView:0xc4e0760> 
| | | | | | | | | | | | | <UIView:0xc4e0880> 
| | | | | | | | | | | | <UIView:0xc4e5c40> 
| | | | | | | | | | | <UIImageView:0xc4e67d0> 
| | | | | | | | | | | | <UIImageView:0xc4e5d40> 
| | | | | | | | | *<_UILayoutGuide:0xb478440> - AMBIGUOUS LAYOUT 
| | | | | | | | | *<_UILayoutGuide:0xb4782a0> - AMBIGUOUS LAYOUT 
| | | | | | <UINavigationBar:0xc1c4a10> 
| | | | | | | <_UINavigationBarBackground:0xc1c7530> 
| | | | | | | | <UIImageView:0xc1c7810> 
| | | | | | | <UINavigationItemView:0xc4cf610> 
| | | | | | | | <UILabel:0xc4dcae0> 
| | | | | | | <UINavigationItemButtonView:0xc4dcf10> 
| | | | | | | | <UILabel:0xc4dcfe0> 
| | | | | | | <_UINavigationBarBackIndicatorView:0xc3c3880> 
| | | | | <GADBannerView:0xc3de310> 
| | | | | | <GADWebView:0xc3de440> 
| | | | | | | <_UIWebViewScrollView:0xc3e01a0> 
| | | | | | | | <UIWebBrowserView:0xd280600> 
| | | | | <ADBannerView:0xc19ad20> 
| | | | | | <ADRemoteView:0xc19cca0> 
| | | | | | <UIView:0xc19d590> 
| | <UITabBar:0xb4a47e0> 
| | | <_UITabBarBackgroundView:0xc47db60> 
| | | | <_UIBackdropView:0xc47d240> 
| | | | | <_UIBackdropEffectView:0xc47e490> 
| | | | | <UIView:0xc47e530> 
| | | <UITabBarButton:0xc19ed40> 
| | | | <UITabBarSwappableImageView:0xc17ee00> 
| | | | <UITabBarButtonLabel:0xc19f170> 
| | | <UITabBarButton:0xc1a4120> 
| | | | <UITabBarSwappableImageView:0xc1a3570> 
| | | | <UITabBarButtonLabel:0xc1a3e60> 
| | | <UITabBarButton:0xc1a62b0> 
| | | | <UITabBarSwappableImageView:0xc1a6660> 
| | | | <UITabBarButtonLabel:0xc1a6390> 
| | | <UITabBarButton:0xc1a8a30> 
| | | | <UITabBarSwappableImageView:0xc1a9080> 
| | | | <UITabBarButtonLabel:0xc1a8f60> 
| | | <UIImageView:0xc47ead0> 

Любая помощь в выяснении, что может быть причиной этого, я был бы очень благодарен. Спасибо.

ответ

0

Я думаю, вы забываете установить высоты своих взглядов.

Например,

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[searchControlsView(49)]" options:0 metrics:nil views:viewsDictionary]; 
+0

Ну, высота и ширина ограничения добавляются с помощью интерфейса строитель каждого вида. Он должен быть там, даже если я удалю ограничения из супервизора. – Pablo

+0

Хорошо, тогда мне нужна дополнительная информация. У меня нет полной картины ограничений в игре. Поскольку вы используете язык визуального формата, я думал, что макет был определен только кодом выше. – bilobatum

Смежные вопросы