我使用的自動佈局約束編程和我經常看到相同類型的錯誤在我的應用程序通常與看起來像這樣的約束:自動版式約束問題突發NSAutoresizingMaskLayoutConstraint
"<NSAutoresizingMaskLayoutConstraint:0x82da910 h=--& v=--& V:[UITableViewCellContentView:0x82d9fb0(99)]>"
我已經把一些樣本代碼重現在https://github.com/nicolasccit/AutoLayoutCellWarning
在本例中,我建立與2個UI元素一個非常簡單的視圖:稱爲imageThumbnail的圖像視圖和被叫標籤與一些約束標籤:
"H:|-padding-[_imageThumbnail(==imageWidth)]-[_labelName]";
"V:|-padding-[_imageThumbnail(==imageHeight)]-padding-|";
"V:|-padding-[_labelName]";
在這兩個元素上,我將AutoresizingMaskIntoConstraints設置爲NO。
而且我得到以下異常:
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0xa6e4f90 V:[UIImageView:0xa6e4340]-(10)-| (Names: '|':UITableViewCellContentView:0xa6e4150)>",
"<NSLayoutConstraint:0xa6e4f10 V:[UIImageView:0xa6e4340(80)]>",
"<NSLayoutConstraint:0xa6e4ed0 V:|-(10)-[UIImageView:0xa6e4340] (Names: '|':UITableViewCellContentView:0xa6e4150)>",
"<NSAutoresizingMaskLayoutConstraint:0xa6e4ac0 h=--& v=--& V:[UITableViewCellContentView:0xa6e4150(99)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xa6e4f90 V:[UIImageView:0xa6e4340]-(10)-| (Names: '|':UITableViewCellContentView:0xa6e4150)>
我知道最後的約束相關內容的看法,但我不清楚正確刪除它(設置
AutoresizingMaskIntoConstraints爲NO的內容查看引發誤差和下方的SO鏈接,它打亂了整個佈局):
<NSAutoresizingMaskLayoutConstraint:0xa6e4ac0 h=--& v=--& V:[UITableViewCellContentView:0xa6e4150(99)]>
我在看到了答案:Auto layout constraints issue on iOS7 in UITableViewCell但他們都不在這裏爲我工作。
我相信我定義的約束條件是有效且相當直接的,但似乎無法弄清楚發生了什麼。我看到在iOS 6.1和iOS 7中都出現異常。
任何想法我在這裏做錯了嗎?
感謝, 薩科
有趣。如果我試試這個,我得到以下異常:「***終止應用程序由於未捕獲的異常‘NSInternalInconsistencyException’,理由是:‘自動佈局仍在執行-layoutSubviews後需要TableViewCell的實現-layoutSubviews的需要調用超。’」你是否在行後面添加它:「if(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]){」? – nicolasccit
嗨馬特,我一直在努力遵循這一設置我的約束和佈局命令:http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-可變行高度 對於簡單的情況下,我在GitHub上,我並不真的需要靈活的細胞高度,但我在多行標籤真實的案例做。你介意澄清我做錯了什麼?基本上,爲什麼我應該「永遠不要給」這些命令或「在錯誤的時間給他們」? – nicolasccit
我嘗試刪除約束上的填充並刪除警告,正如你所說現在的行高是問題。 我可以在這個例子中手動設置高度,但在我的實際使用中,不同的單元格會有不同的高度。 從概念上講,在這個非常簡單的例子中,我想說: - 圖像應該是從頂部10pt和底部10pt和80pt高。 - 單元格的高度應該在viewController中自動計算。 爲此,我只創建一個隱藏單元,其目的就是爲了實現這一點。 – nicolasccit