जैसा कि (कई) अन्य लोगों ने बताया है, आप आसानी से सभी यूआईटेबल व्यूसेल विभाजकों को आसानी से छिपा सकते हैं, केवल उन्हें पूरे यूआईटेबल व्यू के लिए बंद करके; अपने UITableViewController में जैसे
- (void)viewDidLoad {
...
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
...
}
दुर्भाग्य से, इसका वास्तविक पीआईटीए प्रति-सेल आधार पर करना है, जो कि आप वास्तव में पूछ रहे हैं।
व्यक्तिगत रूप से, मैंने कई बदलने की कोशिश की है cell.separatorInset.left
, फिर से, के रूप में (कई) दूसरों ने सुझाव दिया है, लेकिन समस्या यह है कि Apple को उद्धृत करने के लिए (जोर दिया गया):
" ... आप वर्तमान संपत्ति की सामग्री और तालिका के बाएं और दाएं किनारों के बीच स्थान जोड़ने के लिए इस संपत्ति का उपयोग कर सकते हैं । सकारात्मक इनसेट मान सेल सामग्री और सेल विभाजक को अंदर की ओर और टेबल किनारों से दूर ले जाते हैं ... "
इसलिए यदि आप विभाजक को दाईं ओर ऑफ़स्क्रीन खोलकर विभाजक को 'छिपाने' का प्रयास करते हैं, तो आप अपने सेल के contentView को भी इंडेंट कर सकते हैं। जैसा कि क्रिफ़ान द्वारा सुझाया गया है, तब आप इस ख़राब साइड-इफ़ेक्ट की भरपाई करने के लिए सेटिंग करके cell.indentationWidth
और cell.indentationLevel
उचित रूप से सब कुछ वापस ले जाने की कोशिश कर सकते हैं , लेकिन मैंने पाया है कि यह अविश्वसनीय भी है (सामग्री अभी भी इंडेंट हो रही है ...)।
सबसे विश्वसनीय तरीका जो मैंने पाया है वह layoutSubviews
एक साधारण UITableViewCell उपवर्ग में ओवर-राइड करना और सही इनसेट सेट करना है ताकि यह बाईं इनसेट को हिट करे, जिससे विभाजक की 0 चौड़ाई हो और इतना अदृश्य हो [इसे लेआउट में किया जाना चाहिए। घुमावों को संभालें]। मैं इसे चालू करने के लिए अपने उपवर्ग में एक सुविधा विधि भी जोड़ता हूं।
@interface MyTableViewCellSubclass()
@property BOOL separatorIsHidden;
@end
@implementation MyTableViewCellSubclass
- (void)hideSeparator
{
_separatorIsHidden = YES;
}
- (void)layoutSubviews
{
[super layoutSubviews];
if (_separatorIsHidden) {
UIEdgeInsets inset = self.separatorInset;
inset.right = self.bounds.size.width - inset.left;
self.separatorInset = inset;
}
}
@end
कैविएट: मूल सही इनसेट को पुनर्स्थापित करने का एक विश्वसनीय तरीका नहीं है , इसलिए आप विभाजक को 'अन-हाइड' नहीं कर सकते हैं, इसलिए मैं एक अपरिवर्तनीय hideSeparator
विधि का उपयोग कर रहा हूं (बनाम विभाजक का उपयोग करके )। कृपया ध्यान दें कि विभाजक इनसेट पुन: उपयोग की गई कोशिकाओं में बना रहता है, क्योंकि आप 'अन-हाइड' नहीं कर सकते हैं, आपको इन छिपे-विभाजक कोशिकाओं को अपने स्वयं के पुन: उपयोग में रखने की आवश्यकता है।