दिलचस्प पोस्ट
JQuery में String.format के समतुल्य शब्द आवृत्ति की गणना जावा 8 कस्टम विशेषताओं – हाँ या ना? सी पूर्णांक के nth बाइट प्राप्त करें कंसोल को आउटपुट के लिए मैं कोरडाटा डीबग तर्क कैसे प्राप्त करूं? बैच फ़ाइल में वाइल्डकार्ड से मेल खाने वाली फ़ाइलों के माध्यम से लूप कैसे करें दृष्टिकोण के माध्यम से आर में ईमेल भेज रहा है पार्सलेल से परिवर्तनीय में संग्रहित कमान निष्पादित JToken: कच्चे / मूल JSON मान प्राप्त करें रेल में स्थिर सामग्री कैसे करें? अगर jquery लोड किया गया है, तो यह जांचें कि झूठी अगर यह लोड करें जावा में एक बूलियन चर को टॉगल करने का सबसे सुरक्षित तरीका है? टेम्पलेट नाम जाएं पायथन की छिपी हुई विशेषताओं कैसे यूआईएलबल में छोटा आइकन एम्बेड करें

कैसे UITableViewCell के बीच अंतर जोड़ने के लिए

क्या UITableViewCell बीच अंतर जोड़ने का कोई तरीका है?

मैंने एक टेबल बनाई है और प्रत्येक कक्ष में केवल एक छवि होती है छवि इस तरह सेल को असाइन की गई है:

 cell.imageView.image = [myImages objectAtIndex:indexPath.row]; 

लेकिन यह छवि को विस्तारित और पूरे सेल में फिट कर देता है, और छवियों के बीच कोई अंतर नहीं है।

या इस तरह कहें, छवि की ऊंचाई 50 है, और मैं छवियों के बीच 20 रिक्तियां जोड़ना चाहता हूं। क्या इसे पूरा करने का कोई रास्ता है?

Solutions Collecting From Web of "कैसे UITableViewCell के बीच अंतर जोड़ने के लिए"

जिस तरह से मैं कोशिकाओं के बीच अंतर जोड़ने को प्राप्त करता हूं, वह संख्या है, ऑब्जेक्ट्स = "आपकी सरणी संख्या" और प्रत्येक अनुभाग में केवल एक पंक्ति होती है। और फिर headerView और इसकी ऊंचाई को परिभाषित करें

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return yourArry.count; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return cellSpacingHeight; } -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *v = [UIView new]; [v setBackgroundColor:[UIColor clearColor]]; return v; } 

स्विफ्ट वर्शन

स्विफ्ट 3 के लिए अपडेट किया गया

यह उत्तर भविष्य के दर्शकों के लिए मूल प्रश्न से थोड़ा अधिक सामान्य है। स्विफ्ट के लिए बुनियादी UITableView उदाहरण के लिए यह एक पूरक उदाहरण है

यहां छवि विवरण दर्ज करें

अवलोकन

मूल विचार प्रत्येक एरे आइटम के लिए एक नया अनुभाग (नई पंक्ति के बजाय) बनाना है। अनुभागों में शीर्ष लेख ऊँचाई का उपयोग करके स्थान दिया जा सकता है

यह कैसे करना है

  • स्विफ्ट के लिए UITableView उदाहरण में वर्णित के रूप में अपना प्रोजेक्ट सेट अप करें (यानी, एक UITableView जोड़ें और दृश्य नियंत्रक के लिए tableView व्यू आउटलेट को हुक करें)।

  • इंटरफ़ेस बिल्डर में, मुख्य दृश्य पृष्ठभूमि का रंग हल्का नीला और UITableView पृष्ठभूमि रंग को साफ़ करें।

  • निम्नलिखित के साथ ViewController.swift कोड बदलें।

ViewController.swift

 import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { // These strings will be the data for the table view cells let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"] let cellReuseIdentifier = "cell" let cellSpacingHeight: CGFloat = 5 @IBOutlet var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() // These tasks can also be done in IB if you prefer. self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) tableView.delegate = self tableView.dataSource = self } // MARK: - Table View delegate methods func numberOfSections(in tableView: UITableView) -> Int { return self.animals.count } // There is just one row in every section func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } // Set the spacing between sections func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return cellSpacingHeight } // Make the background color show through func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = UIView() headerView.backgroundColor = UIColor.clear return headerView } // create a cell for each table view row func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as UITableViewCell! // note that indexPath.section is used rather than indexPath.row cell.textLabel?.text = self.animals[indexPath.section] // add border and color cell.backgroundColor = UIColor.white cell.layer.borderColor = UIColor.black.cgColor cell.layer.borderWidth = 1 cell.layer.cornerRadius = 8 cell.clipsToBounds = true return cell } // method to run when table view cell is tapped func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // note that indexPath.section is used rather than indexPath.row print("You tapped cell number \(indexPath.section).") } } 

ध्यान दें कि indexPath.section सरणी तत्वों के लिए उचित मान प्राप्त करने के लिए और स्थान की स्थिति टैप करने के लिए indexPath.row बजाय उपयोग किया जाता है।

आपको अतिरिक्त पैडिंग / स्थान पर दाएं और बाएं कैसे मिले?

मुझे यह वैसे ही मिला है जैसे आप किसी भी दृश्य को रिक्ति जोड़ते हैं। मैं ऑटो लेआउट की कमी का इस्तेमाल किया। अग्रणी और अनुगामी बाधाओं के लिए अंतराल जोड़ने के लिए बस इंटरफ़ेस बिल्डर में पिन उपकरण का उपयोग करें।

मुझे UITableCells के बीच एक "अंतरिक्ष" होने की एक ही अवधारणा करने की आवश्यकता थी। चूंकि आप वाकई कोशिकाओं के बीच स्थान नहीं जोड़ सकते हैं इसलिए आप इसे यूआईटीबल्यूव्यू की सेल ऊँचाई में जोड़कर और फिर अपने सेल के कंटेंट दृश्य में एक यूआईवीआईवी जोड़कर नकली बना सकते हैं। मैं एक और टेस्ट प्रोजेक्ट में एक प्रोटोटाइप का एक स्क्रीन शॉट आया हूं, जब मैं यह अनुकरण कर रहा था:

UITableViewCells के बीच की दूरी

यहां कुछ कोड है (नोट: प्रदर्शन के प्रयोजनों के लिए बहुत सारे कोडित मूल्य हैं)

सबसे पहले, मुझे UITableViewCell पर विभिन्न ऊंचाइयों के लिए अनुमति देने के लिए ऊँचाई heightForRowAtIndexPath सेट करना आवश्यक था।

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *text = [self.newsArray objectAtIndex:[indexPath row]]; if ([text isEqual:@"December 2012"]) { return 25.0; } return 80.0; } 

इसके बाद, मैं UITableViewCells के लगने और महसूस में हेरफेर करना चाहता हूं ताकि मैं वैसे willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath विधि।

 - (void)tableView:(UITableView *)tableView willDisplayCell:(NewsUITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (cell.IsMonth) { UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 20, 20)]; av.backgroundColor = [UIColor clearColor]; av.opaque = NO; av.image = [UIImage imageNamed:@"month-bar-bkgd.png"]; UILabel *monthTextLabel = [[UILabel alloc] init]; CGFloat font = 11.0f; monthTextLabel.font = [BVFont HelveticaNeue:&font]; cell.backgroundView = av; cell.textLabel.font = [BVFont HelveticaNeue:&font]; cell.textLabel.textColor = [BVFont WebGrey]; } if (indexPath.row != 0) { cell.contentView.backgroundColor = [UIColor clearColor]; UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,70)]; whiteRoundedCornerView.backgroundColor = [UIColor whiteColor]; whiteRoundedCornerView.layer.masksToBounds = NO; whiteRoundedCornerView.layer.cornerRadius = 3.0; whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1); whiteRoundedCornerView.layer.shadowOpacity = 0.5; [cell.contentView addSubview:whiteRoundedCornerView]; [cell.contentView sendSubviewToBack:whiteRoundedCornerView]; } } 

ध्यान दें कि मैंने अपनी सफ़ेद राउंड कॉर्नर की ऊंचाई 70.0 बना दी है और यही कारण है कि सिम्युलेटेड स्पेस का कारण बनता है क्योंकि सेल की ऊंचाई वास्तव में 80.0 है, लेकिन मेरी सामग्रीव्यू 70.0 है जो इसे उपस्थित करता है।

यह भी बेहतर करने के अन्य तरीके हो सकते हैं, लेकिन यह सिर्फ यह है कि मुझे यह कैसे करना है। मुझे उम्मीद है कि यह किसी और को मदद कर सकता है

स्विफ्ट का उपयोग करके मेरा आसान समाधान:

 // Inside UITableViewCell subclass override func layoutSubviews() { super.layoutSubviews() let f = contentView.frame let fr = UIEdgeInsetsInsetRect(f, UIEdgeInsetsMake(10, 10, 10, 10)) contentView.frame = fr } 

या एक लाइन कोड

 override func layoutSubviews() { super.layoutSubviews() contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, UIEdgeInsetsMake(10, 10, 10, 10)) } 

परिणाम यहां छवि विवरण दर्ज करें

आपको अपनी छवि में फ़्रेम सेट करना होगा अनचेस्टेड कोड है

 cell.imageView.frame = CGRectOffset(cell.frame, 10, 10); 

यदि आप पहले से ही अनुभाग हेडर (या पादलेख) का उपयोग नहीं कर रहे हैं, तो आप उन्हें तालिका कक्षों में मनमानी रिक्ति जोड़ने के लिए उपयोग कर सकते हैं। एन पंक्तियों के साथ एक अनुभाग होने के बजाय, प्रत्येक एक पंक्ति के साथ n खंड वाले तालिका बनाएं

tableView:heightForHeaderInSection: लागू करें tableView:heightForHeaderInSection: रिक्ति को नियंत्रित करने के लिए विधि

आप tableView:viewForHeaderInSection: को भी लागू करना चाह सकते हैं tableView:viewForHeaderInSection: यह नियंत्रित करने के लिए कि अंतर किस प्रकार दिखता है।

तीन तरीकों से मैं सोच सकता हूं:

  1. एक कस्टम तालिका सेल बनाएं जो संपूर्ण सेल को उस तरीके से दिखाता है, जिसे आप चाहते हैं

  2. छवि दृश्य में छवि को जोड़ने के बजाय, छवि दृश्य के सबव्यूज़ को साफ़ करें, एक कस्टम दृश्य बनाएं, जो छवि के लिए एक UIImageView और अन्य दृश्य जोड़ता है, संभवत: एक सरल UIView जो इच्छित अंतरालन प्रदान करता है, और इसे एक सबव्यूज के रूप में जोड़ता है छवि दृश्य

  3. मैं सुझाव देना चाहता हूं कि आप एक निश्चित आकार / पैडिंग को सेट करने के लिए यूआईएमएजेव्यू को सीधे हेरफेर करना चाहते हैं, लेकिन मैं Xcode के पास कहीं नहीं हूं इसलिए मैं यह पुष्टि नहीं कर सकता कि यह कैसे काम करेगा।

क्या इसका कोई मतलब है?

मुझे लगता है कि सबसे सीधे आगे समाधान यदि आपकी बस थोड़ी सी जगह की तलाश है और कम से कम महंगी होगी तो बस अपने टेबल पृष्ठभूमि रंग में सेल की सीमा रंग सेट करना होगा, फिर इच्छित परिणाम प्राप्त करने के लिए सीमा चौड़ाई निर्धारित करें!

  cell.layer.borderColor = blueColor.CGColor cell.layer.borderWidth = 3 

हां, आप कक्ष में सामग्री दृश्य पर एक आधार दृश्य बनाकर दो कक्षों के बीच अंतर (पैडिंग) बढ़ा या घटा सकते हैं। सामग्री दृश्य पृष्ठभूमि के लिए स्पष्ट रंग सेट करें और आप कक्षों के बीच स्थान बनाने के लिए आधार दृश्य की ऊंचाई को समायोजित कर सकते हैं।

देखकर देखें – (UIEdgeInsets) लेआउटमार्गिन; सेल पर

मुझे लगता है कि यह साफ समाधान है:

 class MyTableViewCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() layoutMargins = UIEdgeInsetsMake(8, 0, 8, 0) } } 

UITableViewDelegate, heightForRowAtIndexPath उपयोग करें और पंक्ति की ऊंचाई लौटाएं।

  (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 100.0f ; } 

तेज 3 में उदाहरण ..

यहां छवि विवरण दर्ज करें

  1. एक एकल दृश्य आवेदन बनाएं
  2. दृश्य नियंत्रक में तालिका दृश्य जोड़ें
  3. टेबलेव सेल के लिए एक कस्टमसेल जोड़ें
  4. देखने नियंत्रक कोड जैसे bellow है

      class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var tableView: UITableView! var arraytable = [[String:Any]]() override func viewDidLoad() { super.viewDidLoad() arraytable = [ ["title":"About Us","detail":"RA-InfoTech Ltd -A Joint Venture IT Company formed by Bank Asia Ltd"], ["title":"Contact","detail":"Bengal Center (4th & 6th Floor), 28, Topkhana Road, Dhaka - 1000, Bangladesh"] ] tableView.delegate = self tableView.dataSource = self //For Auto Resize Table View Cell; tableView.estimatedRowHeight = 44 tableView.rowHeight = UITableViewAutomaticDimension //Detault Background clear tableView.backgroundColor = UIColor.clear } 

    फंक नंबरऑफ़सेक्शन (तालिका दृश्य में: UITableView) -> इंट {रिटर्न सरमेज़बन्द। count}

      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } // Set the spacing between sections func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 10 } // Make the background color show through func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let headerView = UIView() headerView.backgroundColor = UIColor.clear return headerView } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as! CustomCell cell.tv_title.text = arraytable[indexPath.section]["title"] as! String? cell.tv_details.text = arraytable[indexPath.section]["detail"] as! String? //label height dynamically increase cell.tv_details.numberOfLines = 0 //For bottom border to tv_title; let frame = cell.tv_title.frame let bottomLayer = CALayer() bottomLayer.frame = CGRect(x: 0, y: frame.height - 1, width: frame.width, height: 1) bottomLayer.backgroundColor = UIColor.black.cgColor cell.tv_title.layer.addSublayer(bottomLayer) //borderColor,borderWidth, cornerRadius cell.backgroundColor = UIColor.lightGray cell.layer.borderColor = UIColor.red.cgColor cell.layer.borderWidth = 1 cell.layer.cornerRadius = 8 cell.clipsToBounds = true return cell } } 
  5. जिथूब को पूरा स्रोत डाउनलोड करें: लिंक

    https://github.com/enamul95/CustomSectionTable

मेरी स्थिति में मैं कस्टम UIView को देखने के लिए अनुभाग में भी फेयरहाइडर का इस्तेमाल किया था ऊँचाई खंड वापसी स्थिर ऊंचाई में फोरेडडर 40, मुद्दा यह था कि जब कोई डेटा नहीं होता है, सभी हेडर दृश्य एक-दूसरे को छूए गए थे इसलिए मैं डेटा अनुपस्थित में अनुभाग के बीच की जगह चाहता था, इसलिए मैं सिर्फ "टेबलव्यूवई शैली" विमान को "समूह" में बदल कर तय किया। और यह मेरे लिए काम किया

सेल में एक आंतरिक दृश्य जोड़ें तो उसके लिए अपने विचार देखें