控制器中的轮播在我的收藏视图中弄乱了大小

Posted

技术标签:

【中文标题】控制器中的轮播在我的收藏视图中弄乱了大小【英文标题】:Carousel in controller is messing with sizes in my collection view 【发布时间】:2016-09-08 10:41:42 【问题描述】:

我的视图顶部有一个 UICollectionView 和一个 ListView,当我单击 ListView 的一个项目时,它会打开一个新控制器,顶部和底部有两个(隐藏/非隐藏)条,全屏显示 WebView与旋转木马。 我通常使用点击或滑动,但是在我关闭我的新视图(我在顶部栏中有一个 X)后,它显示了以前的视图,但突然集合大小的高度变小了。 ¿如何防止这种情况发生?

我一直在环顾四周,它与 this 一样的问题,但不同之处在于我的问题不是 NavigationBar,而是 NavigationBar 下方的集合。

我已经花了好几个小时了,我需要有人指出我的方向。

编辑

编辑 - 更新

在我的第一个视图中,我有一个 ListView,一个

[[NSNotificationCenter defaultCenter] postNotificationName: showFooMode....

我在另一个视图中确实有一个观察者,它是我整个应用程序的通用视图,因为它在左侧有菜单,它在右侧更改数据:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showfooMode:) name:@"showFooMode" object:nil];

还有选择器方法……

-(void)showfooMode:(NSNotification *)notification
    NSLog(@"Show fooView in the GeneralView);
        FooItem *foo = [notification.object objectForKey:@"foo"];
        NSInteger currentIndex = [[notification.object objectForKey:@"foo"] integerValue];

        auxFooView = [notification.object objectForKey:@"delegate"];
      //  currentIndex = 20;

        fooView = [self.storyboard instantiateViewControllerWithIdentifier:@"fooView"];
        [fooView setNews:news];
        [fooView setDelegate:self];
        [fooView setCurrentIndex:currentIndex];
        fooView.view.alpha = 0;



        [self.view addSubview: magazineVC.view];
        [self addChildViewController:fooView];


        fooView.view.translatesAutoresizingMaskIntoConstraints = NO;

        NSDictionary *views = @@"childview": fooView.view;
        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-0-[childview]-0-|" options:0 metrics:nil views:views]];
        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[childview]-0-|" options:0 metrics:nil views:views]];
        [self.view layoutIfNeeded];

        [UIView animateWithDuration:0.3 animations:^
            fooView.view.alpha = 1;
        ];

【问题讨论】:

能否请您添加一些屏幕截图或草图? 我已经画了一些草图,这样你就可以看到它们了。希望这对我的解释有所帮助 您的第二个控制器是否隐藏了状态栏? 是的,确实在隐藏它 我认为您对视图顶部有限制而不是顶部布局指南的原因。如果不是,请尝试在您的第二个 VC 的 viewWillDissapear 中再次显示状态栏。 【参考方案1】:

终于,我实现了,现在这种情况不再发生了。这仅在您不需要导航栏时才有效,并且可以设置自己的自定义栏。 我这样做的方式不是以编程方式创建顶部栏,而是在布局中创建它,然后一切正常。我认为主要问题出在第二视图中,因为它是全屏模式。

【讨论】:

以上是关于控制器中的轮播在我的收藏视图中弄乱了大小的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 子类弄乱了adjustFontSizeToWidth

C# Process.Start 在批处理文件中弄乱了 URI

toolsVersion="11201" 弄乱了我的故事板

我想像在我的轮播视图中一样制作视图[关闭]

表格尺寸最小

使用流畅的轮播在选项卡之间移动