iphone - मेरे टेबल व्यू में सेपरेटर लाइन से पहले व्हाइट स्पेस




ios uitableview (6)

तीव्र

cell.separatorInset = UIEdgeInsetsMake(0, 0, cell.frame.size.width, 0)
if (cell.respondsToSelector("preservesSuperviewLayoutMargins")){
        cell.layoutMargins = UIEdgeInsetsZero
        cell.preservesSuperviewLayoutMargins = false
   }

यह मेरे लिए काम किया

धन्यवाद

मेरे पास UITableView के बारे में एक प्रश्न है ... मेरे पास UITableViewController है और मैंने एक कस्टम सेल बनाया है। जब मैं तालिका दृश्य को देखता हूं तो मुझे विभाजक रेखा से पहले एक छोटी सी सफेद जगह दिखाई देती है जैसा कि आप इस स्क्रीनशॉट में देख सकते हैं:

क्यूं कर? यह एक डिफ़ॉल्ट कल्पना है? क्या मैं इस सफेद बाएं पैडिंग को हटाने के लिए कुछ बदल सकता हूं?


UITableView में अवांछित पैडिंग को हटाने के लिए नीचे दिए गए कोड का उपयोग करें। यह आईओएस 8 और 7 दोनों पर काम करता है

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell     forRowAtIndexPath:(NSIndexPath *)indexPath
{

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)])
    {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    } 

    if ([tableView respondsToSelector:@selector(setLayoutMargins:)])
    {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)])
    {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

आप में से उन लोगों के लिए जो स्विफ्ट में UIEdgeInsetSettings को बनाए रखना चाहते हैं और स्टोरीबोर्ड का उपयोग नहीं कर रहे हैं:

इससे पहले: (डिफ़ॉल्ट व्यवहार)

निम्नलिखित कोड जोड़ें:

tableView.separatorInset.right = tableView.separatorInset.left


कोई सफेद जगह नहीं है! मैंने इस पर एक बग दर्ज किया, ऐप्पल ने इसे "बग नहीं" के रूप में बंद कर दिया, लेकिन मुझे बताया कि यह एक बग क्यों नहीं है। मैंने एक साधारण प्रोजेक्ट लिखा है जो ऐप में हर संभव दृश्य के लिए रंग सेट करता है। मैं जो देखता हूं वह यह है कि उन पिक्सल का रंग वास्तव में सेल का पृष्ठभूमि रंग है (सामग्री नहीं!), जैसा कि ऐप्पल ने मुझे बताया था।

Cell.contentView.background रंग ग्रीन है, और सेल। बैकग्राउंड रंग लाल है (पिक्सी के साथ लिया गया):

अंत में, एक विभाजक के बिना, cell.contentView सेल को पूरी तरह से भरता है। विभाजक के साथ, नीचे एक पिक्सेल या दो अंतर होता है। विभाजक, जब इंसेट, अधिकांश अंतर को भरता है, लेकिन फिर सेल के कुछ पिक्सेल दिखा रहे हैं।

रहस्य सुलझ गया!

संपादित करें: ऐसा लगता है कि आप अपने स्टोरीबोर्ड को कैसे कॉन्फ़िगर करते हैं, इस पर निर्भर करता है कि सामग्री दृश्य। बैकग्राउंड रंग "खो गया" या सफेद पर सेट हो जाता है। यदि आप कोशिकाओं की आपूर्ति करते समय इसे सवारी करते हैं तो आप अपना इच्छित व्यवहार प्राप्त कर सकते हैं:

    let cell = tableView.dequeueReusableCellWithIdentifier("FOO", forIndexPath: indexPath) as UITableViewCell

    cell.backgroundColor = UIColor.redColor()
    cell.contentView.backgroundColor = UIColor.greenColor()

यहां स्विफ्ट 3 और बाद के लिए UITableViewCell क्लास का विस्तार है

extension UITableViewCell
{
    func removeSeparatorLeftPadding() -> Void
    {
        if self.responds(to: #selector(setter: separatorInset)) // Safety check
        {
            self.separatorInset = UIEdgeInsets.zero
        }
        if self.responds(to: #selector(setter: layoutMargins)) // Safety check
        {
            self.layoutMargins = UIEdgeInsets.zero
        }
    }
}

उपयोग:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "menuCellID")!
    // .. Your other code
    cell.removeSeparatorLeftPadding()
    return cell
}

उम्मीद है कि यह किसी की मदद करता है!

नरेश।


वैकल्पिक रूप से, आप इसे इंटरफ़ेस बिल्डर (आईबी) में भी संपादित कर सकते हैं:

  1. आईबी पर जाओ
  2. टेबल व्यू का चयन करें।
  3. दाईं ओर "विशेषता निरीक्षक" खोलें।
  4. डिफॉल्ट से कस्टम तक "विभाजक इन्सेट" बदलें।
  5. 15 से 0 तक "बाएं" विशेषता बदलें।

यह अशोक के जवाब के समान प्रभाव है, लेकिन किसी भी कोड को लिखने की आवश्यकता नहीं है।

आईओएस 7 और 8 पर वर्क्स अपडेट करें

आईओएस 9 पर काम अपडेट करें







interface-builder