2014-07-03 67 views
-2

我有一個從xib創建的視圖(self.printSettingsView)。我將這個視圖作爲子視圖添加到另一個視圖(self.view)。我以編程方式添加約束如下:約束以編程方式添加到xib視圖不起作用

[self.printSettingView setTranslatesAutoresizingMaskIntoConstraints: NO]; 
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView 
                    attribute:NSLayoutAttributeLeading 
                    relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                    attribute:NSLayoutAttributeLeading 
                   multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:leftConstraint]; 
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView 
                   attribute:NSLayoutAttributeTop 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.topBar 
                   attribute:NSLayoutAttributeBottom 
                   multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:topConstraint]; 
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView 
                    attribute:NSLayoutAttributeHeight 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeHeight 
                    multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:heightConstraint]; 
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView 
                    attribute:NSLayoutAttributeWidth 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeWidth 
                    multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:widthConstraint]; 

所有其他約束條件都會生效,除了高度。 我能在這裏做錯什麼?

感謝

+0

請勿使用外部網站共享代碼,請將其粘貼到此處。另外,通過屏幕截圖提供一些上下文會很好。 – Sulthan

+0

「不工作」是一個完全無用的表達。你需要說明你的代碼實際上做了什麼,以及你期望它會做什麼。 – rdelmar

回答

0

不知道在你的XIB文件或者你希望發生VS發生了什麼(截圖將是有益的),這是很難說的約束。不過,我確實有一個建議,可能邏輯不正確。

第二個約束是將printViewSettings頂部固定到topBar的底部,該部分有意義。然而,下一個將printViewSettings的高度設置爲其超級視圖的高度。這可能不會與你想要的東西混雜在一起,因爲你的超級視圖也包含了你的topBar,因此可能比你期望的大。你實際上想要的是一個約束,它將printViewSettings的底部定位到superview的底部。

0

對不起,有關不完整的信息的傢伙。主要問題在於,我在我的主視圖中爲子視圖分配了一個約束,無論是約束的常量,子視圖的大小保持不變。我發現問題是子視圖又具有固定高度約束的組件(子視圖)。我使它們與父視圖的高度成正比,現在它可以工作。

相關問題