相关疑难解决方法(0)

导航控制器顶部布局指南不符合自定义过渡

精简版:

当与自定义转换和UINavigationControlleriOS7 结合使用时,我遇到了自动布局顶部布局指南的问题.具体而言,顶级布局指南和文本视图之间的约束不受尊重.有没有人遇到过这个问题?


长版:

我有一个场景明确定义了约束(即顶部,底部,左侧和右侧),呈现如下视图:

对

但是当我在导航控制器上使用自定义转换时,顶部布局指南的顶部约束似乎关闭,它呈现如下,好像顶部布局指南位于屏幕顶部,而不是底部导航控制器:

错误

使用自定义转换时,导航控制器的"顶部布局指南"似乎变得混乱.其余约束正确应用.如果我旋转设备并再次旋转它,一切都会突然正确呈现,所以看起来并不是没有正确定义约束.同样,当我关闭自定义转换时,视图会正确呈现.

话虽如此,当我运行时_autolayoutTrace报告UILayoutGuide对象受到影响AMBIGUOUS LAYOUT:

(lldb) po [[UIWindow keyWindow] _autolayoutTrace]
Run Code Online (Sandbox Code Playgroud)

但是每当我看到它们时,这些布局指南总是被报告为含糊不清,即使我已经确保没有遗漏约束(我已经习惯性地选择视图控制器并选择"为视图控制器添加缺少的约束"或选择全部控制和为他们做同样的事情).

在如何我正是这样做的过渡方面,我指定符合对象UIViewControllerAnimatedTransitioninganimationControllerForOperation方法:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                                  animationControllerForOperation:(UINavigationControllerOperation)operation
                                               fromViewController:(UIViewController*)fromVC
                                                 toViewController:(UIViewController*)toVC
{
    if (operation == UINavigationControllerOperationPush)
        return [[PushAnimator alloc] init];

    return nil;
}
Run Code Online (Sandbox Code Playgroud)

@implementation PushAnimator

- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext
{
    return 0.5;
}

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIViewController* toViewController   = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    [[transitionContext containerView] addSubview:toViewController.view];
    CGFloat width = fromViewController.view.frame.size.width;

    toViewController.view.transform = CGAffineTransformMakeTranslation(width, 0); …
Run Code Online (Sandbox Code Playgroud)

uinavigationcontroller autolayout ios7 custom-transition

62
推荐指数
4
解决办法
2万
查看次数

NavigationController中的UIScrollView忽略顶部布局指南

我已经看到了关于自定义转换的类似问题(iOS7自定义ViewController转换和顶部布局指南导航控制器顶部布局指南不满足于自定义转换),但即使定期推送我也有问题.我正在使用最新的Xcode(版本5.1.1(5B1008)).

这是我的故事板: 故事板 第3个VC出现问题

这是第三个VC设置: 在此输入图像描述

我的第三个控制器的布局如下:

UIView
 UIScrollView
  InnerUIView
    Other views
Run Code Online (Sandbox Code Playgroud)

我尝试了两种不同的方法来创建布局:

忽略顶部布局指南(由于导航条,y = 64)

我将scrollview的顶部固定到容器(忽略topLayoutGuide),手动设置内部视图的高度并将其顶部固定为scrollView.它给了我以下结果: 在此输入图像描述

看起来很好,但为什么我需要顶部布局指南呢?

使用topLayout指南

ScrollView的顶部固定在topLayoutGuide上. 在此输入图像描述

如您所见,顶部按钮向下移动,视图看起来很奇怪.

创建此类布局的正确方法是什么?

uiscrollview ios autolayout

3
推荐指数
1
解决办法
2059
查看次数