簡體   English   中英

為什么我的UIScrollView中的UIView不尊重其高度約束?

[英]Why my UIView inside UIScrollView doesn't respect its height contraint?

我想做一個簡單的UIScrollView 為此,我將UIView放入其中,並將所有組件放入此UIView

在此處輸入圖片說明

我的問題是我以編程方式設置了UIScrollView的contentSize(並且可以完美地運行),但是我的UIView不尊重這個新高度...因此,我底部的組件不在UIView而在UIScrollView

在此處輸入圖片說明

這是一個問題,因為與有效的測試UISegmentedControl (“第一/第二”)相反,我的UISegmentedControl (“結束/發射”)沒有響應。

我在UIScrollViewUIView之間設置了相等的高度約束,但是它不起作用...

有一種解決方法。 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
}

相等的高度約束將使框架具有相同的大小,但不會導致視圖的高度等於內容的大小。 我會為視圖創建一個實際的高度約束,然后在設置滾動視圖的contentSize.height之類的東西時,使該約束成為IBOutlet並更新它的常量。

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

無論您在哪里更新,scrollview的內容大小。 我會說,使用自動布局時,通常設置或更新約束比設置框架要好。 設置框架往往會與布局引擎發生沖突。

在此處輸入圖片說明

通過選中“相等高度”框找到設置的約束。 選中“高度”框,為此創建一個IBOutlet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM