【问题标题】:Why my UIView inside UIScrollView doesn't respect its height contraint?为什么我在 ScrollView 中的 UIView 不遵守它的高度限制?
【发布时间】:2015-11-03 16:27:44
【问题描述】:

我想做一个简单的UIScrollView。 为此,我在其中放了一个UIView,并将我的所有组件都放入了这个UIView

我的问题是我以编程方式设置了我的 UIScrollView 的 contentSize(并且它工作得很好),但我的 UIView 不尊重这个新高度......所以我底部的组件不在我的 @ 987654330@ 但在我的UIScrollView 中!

这是一个问题,因为我的 UISegmentedControl(“Consommation/Emission”)没有响应,这与有效的测试 UISegmentedControl(“First/Second”)相反。

我在UIScrollViewUIView 之间设置了相等的高度限制,但它不起作用...

【问题讨论】:

    标签: ios objective-c uiview uiscrollview contentsize


    【解决方案1】:

    等高约束将使框架大小相同,但不会导致视图高度等于内容大小。我会为视图创建一个实际的高度约束,然后使该约束的 IBOutlet 并在您设置滚动视图的 contentSize.height 时更新它的常量

    self.viewHeightConstraint.constant = self.scrollView.contentSize.height;
    

    无论您在哪里更新滚动视图的内容大小。我想说,在使用自动布局时,设置或更新约束通常比设置框架更好。设置框架往往会与布局引擎发生冲突。

    通过选中“等高”框找到​​您设置的约束。选中“高度”框,为其创建一个 IBOutlet。

    【讨论】:

    • 完美运行,我不知道我们可以制作带有约束的 IBOutlet !谢谢。
    • 编辑:不幸的是,我遇到了一个我不太了解的约束问题:<NSLayoutConstraint:0x7f95f8d290d0 UIView:0x7f95f8dcae60.centerY == UIScrollView:0x7f95f9830000.centerY>", "<NSLayoutConstraint:0x7f95f8dcae10 UIView:0x7f95f8dcae60.height == UIScrollView:0x7f95f9830000.height + 808>", "<NSLayoutConstraint:0x7f95f8dc4140 V:|-(0)-[UIView:0x7f95f8dcae60] (Names: '|':UIScrollView:0x7f95f9830000 )>
    • 当您为视图添加显式高度约束时,您是否删除了滚动视图的相等高度? “<0x7f95f8dcae10 uiview:0x7f95f8dcae60.height="=" uiscrollview:0x7f95f9830000.height>
    【解决方案2】:

    有办法解决这个问题。 听听UIScrollViewcontentSize 的变化。 当 contentsize 发生变化时,您会抓住它并更改子视图的框架(高度,宽度..)

    像这样:

    [scrollView addObserver:self
                 forKeyPath:@"contentSize"
                    options:NSKeyValueObservingOptionNew
                    context:NULL];
    

    你在这里抓住它:

    - (void) observeValueForKeyPath:(NSString*)keyPath
                           ofObject:(id)object
                             change:(NSDictionary*)change
                            context:(void *)context {
        //change subview frame accordingly
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 2023-03-24
      • 2018-05-31
      • 1970-01-01
      • 2015-09-12
      • 2022-10-18
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多