2013-02-13 55 views
0

我正在使用Xcode(最新版本)構建iOS6,而在Interface Builder中,我現在只用幾個標籤創建了一個自定義單元。我希望標籤「縮進」而不是被左側的刪除符號和右側的「重新排列單元格行」符號所掩蓋。在IB中我注意到一個複選框被選中時稱縮進,而編輯它也被設置爲10,出於某種原因,這仍然不起作用?我們現在還必須將「內容視圖」拖出到畫布上嗎?我認爲那是開箱即用的。此外,即使在IB中這也是一種選擇,我無法改變我的細胞高度。這可能是因爲新的自動佈局系統?我知道我有一個細胞背景,因爲我創建它們時會非常輕微地改變其他細胞的顏色。我還在IB內部將選擇顏色更改爲灰色,這也起作用。TableViewCell「不會」在編輯模式下縮進?

我已經搜索過,每個人都在問「如何阻止它縮進」我希望它發生,而不是它。

有什麼想法?

回答

0

使用自動佈局時,單元格縮進功能無法使用。請參閱this的問題。

0

該問題似乎是AutoLayout中的一個錯誤,系統生成的左側水平約束與標籤和單元格視圖之間相關,與單元的contentView相反。這可能已經在XCode 5中修復了。

很多人似乎都認爲關閉AutoLayout是答案,但是您失去了AutoLayout的所有優點,只是爲了修復一個自定義單元的縮進。它實際上用四行代碼很容易修復(和兩個IBOutlet s,其中之一可能已經);

  1. 爲您的標籤,並從他們每個人在Interface Builder CTRL拖動到你UITableViewCell子類的頭文件,你的左水平約束創建IBOutlet,稱他們爲「label」和「leftHorizontalConstraint」(以代碼符合以下,或者使用自己的姓名和更改代碼

  2. 在你UITableViewCell超越控制awakeFromNib的子類,並添加以下代碼。


    // Remove the constraint that you can't delete in IB (XCode 4) 
    [self removeConstraint:self.leftHorizontalConstraint]; 

    //Create a dictionary of variable name bindings 
    NSDictionary *labelDict = NSDictionaryOfVariableBindings(_label); 

    //Create a horizontal constraint for the label, 20 points from the left edge of its container 
    NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[_label]" options:0 metrics:nil views:labelDict]; 

    //Add the constraint to the containerView 
    [self.contentView addConstraints:constraints]; 

當然,如果IB首先在標籤和containerView之間生成約束,會容易得多。這是我在XCode 5中修復的,但我沒有測試過它。您應該至少能夠使用XCode 5手動刪除約束,因爲IB現在允許您刪除系統生成的約束。