2017-08-02 90 views
-1
我使用自動版式爲我的應用程序設計

。對於我HeaderView之一,我已經設置它的使用ASPECTRATIO高度。改變長寬比約束值編程

現在當主視圖不包含任何數據時,HeaderView高度應該爲0,並且在添加數據時應該再次設置爲原始高寬比。

我們可以改變縱橫比,因爲我們改變任何約束的恆定值。我嘗試了下面的代碼,但它不能正常工作。

@IBOutlet weak var constOptions_Height: NSLayoutConstraint! 
if arrData.count == 0 { 
    constOptions_Height.constant = 0.0 
} 
else{ 
    constOptions_Height.constant = 50.0 
} 
+0

我認爲你需要更改倍頻值不是恆定的。 constOptions_Height.multiplier = cgfloatValue – Rishabh

+0

@Rishabh Multiplier是一個只有屬性。 –

+0

那麼你可以嘗試重新創建約束爲了修改倍頻,很像我們分配框架改變的觀點立場。或者簡單地從代碼而不是故事板創建該約束。 https://stackoverflow.com/questions/31334017/how-to-set-aspect-ratio-constraint-programmatically-in-ios – Rishabh

回答

1

您可以使用下面的方法

給兩個約束。一個是縱橫比,另一個是高度。

使兩個主動或者像

constOptions_Aspect.isActive = false 
constOptions_Height.isActive = true 

你可以給高度爲零,高度不變。

+0

實際上,如果它的優先級低於'constOptions_Height',你不必改變'constOptions_Aspect'。例如,如果'constOptions_Aspect'具有優先級'999'且'constOptions_Height'具有優先級'1001',那麼設置'constOptions_Height.isActive = true'就足夠了。 – Sulthan

+0

是的。我們也可以通過不同的優先事項來實現同樣 –

+0

謝謝@MohammadSadiq。 –