2015-01-26 32 views
0

在我的xib文件中,我對xib文件中標籤的高度有一個約束。當我在模擬器中運行 而在我的目標C,我嘗試使用如何使用目標更新代碼中的約束c

self.heightConstraint.constant = newHeight; 

但沒有什麼去改變它而改變。我已經使用調試器並確保該行被執行。在Spark工具中,我看到標籤高度是舊高度。

如何動態調整高度?

更新:

我已更改我的代碼以添加無校驗。

if (self.heightConstraint != nil) { 
self.heightConstraint.constant = newHeight; 
} 

我的代碼仍然執行,但沒有任何改變。

+0

可能重複的[以編程方式創建佈局約束](http://stackoverflow.com/questions/12826878/creating-layout-constraints-programmatically) – rebello95 2015-01-26 19:19:17

+0

您嘗試添加'[self setNeedsLayout]; [self layoutIfNeeded];'? – 2015-01-26 19:29:15

+0

我已添加[self setNeedsLayout]; [self layoutIfNeeded];我更新heightConstraint後。但是什麼也沒有幫助。 – n179911 2015-01-26 20:09:10

回答

0

沒有什麼不對您的代碼本身是:

self.heightConstraint.constant = newHeight; 

但是,這改變不了什麼在你的界面的原因,即使正在執行它,是self.heightConstraint是不是在你的界面約束的參考。 (這大概是nil。)

0

我同意馬特。您的代碼無法正常工作的可能原因是您的出口鏈接已損壞。一般來說,當試圖通過插座或動作執行某些操作的代碼不起作用時,最可能的原因是插座或動作連接斷開。

經驗法則:在調試立體聲或計算機硬件時,檢查電纜。

Xcode中適用於iOS或Mac OS應用程序的推論:在調試UI代碼時,請檢查您的IBOutlet和IBAction連接。

0

視圖控制器生命週期的哪一部分是您更改約束?您可能需要在父視圖上調用setNeedsLayout