जब से मुझे पता चला कि AutoLayoutमैं इसे हर जगह उपयोग करता हूं, अब मैं इसे एक के साथ उपयोग करने की कोशिश कर रहा हूं tableHeaderView।
मैं एक बनाया subclassका UIViewजोड़ा सब कुछ (लेबल आदि ...) मैं, उनके बाधाओं के साथ करना चाहता था तो मैं इस जोड़ा CustomViewकरने के लिए UITableView' tableHeaderView।
सब कुछ ठीक काम करता है सिवाय UITableViewहमेशा ऊपर के डिस्प्ले को छोड़कर CustomView, ऊपर से मेरा मतलब है कि CustomViewयह नीचे है UITableViewइसलिए इसे नहीं देखा जा सकता है!
ऐसा लगता है कि कोई फर्क नहीं पड़ता कि मुझे क्या करना, heightकी UITableView' tableHeaderViewहै हमेशा 0 (ताकि चौड़ाई, x और y है)।
मेरा प्रश्न: क्या यह संभव है कि फ्रेम को मैन्युअल रूप से सेट किए बिना इसे पूरा किया जाए ?
संपादित करें:CustomView ' subviewमैं उपयोग कर रहा हूँ कि इन बाधाओं है:
_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepLeftInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepBottomInset rules:@[[KeepMin must:5]]]];
मैं एक आसान पुस्तकालय 'KeepLayout' का उपयोग कर रहा हूं क्योंकि लेखन की बाधाएं हमेशा के लिए बंद हो जाती हैं और एक ही बाधा के लिए बहुत सी लाइन खींचती हैं, लेकिन तरीके स्वयं-व्याख्यात्मक हैं।
और UITableViewइन बाधाओं है:
_tableView = [[UITableView alloc]init];
_tableView.translatesAutoresizingMaskIntoConstraints = NO;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:_tableView];
[_tableView keep:[KeepTopInset rules:@[[KeepEqual must:0]]]];// These 4 constraints make the UITableView stays 0 away from the superview top left right and bottom.
[_tableView keep:[KeepLeftInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepRightInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepBottomInset rules:@[[KeepEqual must:0]]]];
_detailsView = [[CustomView alloc]init];
_tableView.tableHeaderView = _detailsView;
मुझे नहीं पता कि मुझे कुछ बाधाओं को सीधे पर सेट करना है CustomView, मुझे लगता है कि कस्टमव्यू की ऊंचाई को UILabel"शीर्षक" में बाधाओं से निर्धारित किया जाता है।
EDIT 2: एक अन्य जांच के बाद ऐसा लगता है कि CustomView की ऊंचाई और चौड़ाई की सही गणना की गई है, लेकिन CustomView के शीर्ष अभी भी UITableView के शीर्ष की तुलना में समान स्तर पर है और वे स्क्रॉल करते समय एक साथ चलते हैं।