UICollectionViewCell चौड़ाई और ऊंचाई को प्रोग्रामेटिक रूप से कैसे सेट करें


100

मैं एक को लागू करने की कोशिश कर रहा हूँ CollectionView। जब मैं ऑटोलेयूट का उपयोग कर रहा हूं, तो मेरी कोशिकाएं आकार नहीं बदलेंगी, लेकिन उनका संरेखण।

अब मैं उनके आकारों को उदा में बदलना चाहता हूं

//var size = CGSize(width: self.view.frame.width/10, height: self.view.frame.width/10)

मैं अपने में स्थापित करने की कोशिश की CellForItemAtIndexPath

collectionCell.size = size

हालांकि यह काम नहीं किया।

क्या इसको हासिल करने के लिए कोई रास्ता है?

संपादित करें :

ऐसा लगता है, कि उत्तर केवल मेरे संग्रह दृश्य चौड़ाई और ऊँचाई को बदल देंगे। क्या बाधाओं में संघर्ष संभव है? उस पर कोई विचार?

जवाबों:


258

कस्टम सेल ऊँचाई चौड़ाई सेट करने के लिए इस विधि का उपयोग करें।

इस प्रोटोकॉल को जोड़ना सुनिश्चित करें

UICollectionViewDelegate

UICollectionViewDataSource

UICollectionViewDelegateFlowLayout

यदि आप स्विफ्ट 5 या xcode 11 का उपयोग कर रहे हैं और बाद में इसे ठीक से काम करने के लिए आपको स्टोरीबोर्ड Estimate Sizeका noneउपयोग करने के लिए सेट करने की आवश्यकता है। यदि आप यह निर्धारित नहीं करेंगे कि नीचे दिया गया कोड अपेक्षा के अनुरूप काम नहीं करेगा।

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

स्विफ्ट 4 या बाद में

extension YourViewController: UICollectionViewDelegate {
    //Write Delegate Code Here
}

extension YourViewController: UICollectionViewDataSource {
    //Write DataSource Code Here
}

extension YourViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: screenWidth, height: screenWidth)
    }
}

उद्देश्य सी

@interface YourViewController : UIViewController<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(CGRectGetWidth(collectionView.frame), (CGRectGetHeight(collectionView.frame)));
}

1
@RamyAlZuhouri ने मेरा उत्तर संपादित किया कृपया जाँच करें और मुझे बताएं कि क्या हमें अभी भी इसे और अधिक स्पष्ट करने की आवश्यकता है
PinkeshGjr

8
मुझे प्रोग्रामेटिक रूप से सब कुछ करने की आदत है, ऐसा लगता है कि यह अब मेरे लिए विदेशी है। स्टोरीबोर्ड में किसी को भी अनुमानित आकार निर्धारित करने और UICollectionViewDelegateFlowLayout को जोड़ने के लिए क्या चाल है
लांस सामरिया

5
एस्टीमेट साइज सेट करना मेरे लिए किसी काम नहीं आया। साभार @PinkeshGjr
मोहन

5
मुझे खुशी है कि मैं यह पाया, मैं 2 घंटे बर्बाद कर यह केवल जादुई 'कोई नहीं करने के लिए अनुमानित आकार' जानने के लिए पीछा
Klajd Deda

3
कोई भी मेरे दिनों को बचाने के लिए अनुमानित आकार निर्धारित करें।
tounaobun

73

UICollectionViewDelegateFlowLayoutअपनी classघोषणा में प्रोटोकॉल जोड़ना सुनिश्चित करें

class MyCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout
{
    //MARK: - UICollectionViewDelegateFlowLayout

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
    {
       return CGSize(width: 100.0, height: 100.0)
    }
}

फ्लो लेआउट का उपयोग करना न भूलें और न ही कस्टम। फिर तुम्हारा केवल वही है जो मेरे लिए काम करता है। धन्यवाद!
सीन

हम यहां कैसे गतिशील ऊंचाई दे सकते हैं 100.0 के रूप में स्थैतिक ऊंचाई दे
sangavi

62

अगर कोई स्टोरीबोर्ड का उपयोग कर रहा है और UICollectionViewDelegateFlowLayout को ओवरराइड कर रहा है तो स्विफ्ट 5 और Xcode 11 में भी किसी को भी अनुमानित आकार निर्धारित करें यहां छवि विवरण दर्ज करें


1
यह मददगार था। धन्यवाद!!
नवल हसन

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

1
कोई भी सब कुछ निश्चित करने के लिए एस्टीमेट का आकार निर्धारित करना
एमएमके

1
Thnx सेटिंग का अनुमान समस्या से कोई भी निर्धारित नहीं है
Salman500

2
अच्छा तय है। यहाँ Apple के दस्तावेज़ीकरण के अनुसार इस समस्या का निदान किया गया है : IB का उपयोग करते समय UICollectionViewFlowLayoutडिफ़ॉल्ट रूप estimatedItemSizeसे लगता है UICollectionViewFlowLayout.automaticSizeभले ही दस्तावेज़ कहता है कि इसे डिफ़ॉल्ट होना चाहिए CGSizeZero। जैसा कि Apple बताता है, automaticSize"आपके संग्रह दृश्य के लिए स्व-आकार देने वाले सेल को सक्षम करता है।" यही कारण है कि आईबी में अन्य आकार परिवर्तन कुछ नहीं करते हैं।
एंड्रयू किर्ना

20

अंत में जवाब मिला। आपको विस्तार करना चाहिए UICollectionViewDelegateFlowLayout
यह ऊपर दिए गए उत्तरों के साथ काम करना चाहिए।


क्या आप एक उदाहरण लिख सकते हैं?
मामदौह अल नकेब

वास्तव में मैंने दोनों डेटासोर्स और डेलिगेटफ्लो लॉयआउट प्रोटोकॉल के साथ विस्तार किया और यह काम नहीं किया। क्या काम किया गया था FlowLayout भाग को अपने स्वयं के विस्तार के लिए अलग करना। यकीन नहीं क्यों लेकिन यह तेजी से काम किया 3.
स्काईवॉकर

15

तेजी से 4.1

आपके पास CollectionView का आकार बदलने के लिए 2 तरीके हैं।
पहला तरीका -> इस प्रोटोकॉल को UICollectionViewDelegateFlowLayout में जोड़ें
मेरे मामले में मैं एक पंक्ति में 3 भाग में सेल विभाजित करना चाहता हूं। मैंने यह कोड नीचे दिया है

extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource ,UICollectionViewDelegateFlowLayout{
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
    {
            // In this function is the code you must implement to your code project if you want to change size of Collection view
            let width  = (view.frame.width-20)/3
            return CGSize(width: width, height: width)
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return collectionData.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
        if let label = cell.viewWithTag(100) as? UILabel {
            label.text = collectionData[indexPath.row]
        }
        return cell
    }
}

दूसरा तरीका -> आपको UICollectionViewDelegateFlowLayout नहीं जोड़ना है, लेकिन आपको नीचे दिए कोड के बजाय viewDidload फ़ंक्शन में कुछ कोड लिखना होगा

class ViewController: UIViewController {
@IBOutlet weak var collectionView1: UICollectionView!
        var collectionData = ["1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "11.", "12."]

    override func viewDidLoad() {
        super.viewDidLoad()
        let width = (view.frame.width-20)/3
        let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
        layout.itemSize = CGSize(width: width, height: width) 
    }
}


extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource {


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return collectionData.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
        if let label = cell.viewWithTag(100) as? UILabel {
            label.text = collectionData[indexPath.row]
        }

        return cell
    }
}

जो भी आप पहले या दूसरे तरीके के रूप में एक कोड लिखते हैं, आपको ऊपर जैसा परिणाम मिलेगा। मैने यह लिखा। इसने मेरे लिए काम किया

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


2
रेवेंडरलिच डॉट कॉम से सीधे
Andrew

11

IPhone आकार के अनुसार आकार अनुपात:

यहाँ है कि आप iPhone के आकार के संबंध में सेल के लिए अलग चौड़ाई और ऊँचाई क्या कर सकते हैं:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    let width = (self.view.frame.size.width - 12 * 3) / 3 //some width
    let height = width * 1.5 //ratio
    return CGSize(width: width, height: height)
}

और हो सकता है कि आपको काम करने के लिए इस जवाब के लिए सेल पर अपने ऑटोलॉयट बाधाओं को भी अक्षम करना चाहिए।


मैंने यह और उपरोक्त सभी समाधानों की कोशिश की, लेकिन एक सेल में सामग्री ऑटोरेस्ज़िंग नहीं कर रही है, मैं इसे कैसे ठीक कर सकता हूं
Biasi Wiga

7

संग्रह दृश्य में एक लेआउट ऑब्जेक्ट है। आपके मामले में, यह संभवतः एक प्रवाह लेआउट ( UICollectionViewFlowLayout ) है। प्रवाह लेआउट की itemSizeसंपत्ति सेट करें ।


इसकी कोशिश की। मुझे पहले जैसा ही मुद्दा देता है। किसी तरह मेरा संग्रह दृश्य मेरी कोशिकाओं के बजाय इसका आकार बदलता है।
JVS

2
खैर, यह सब निर्भर करता है जब आप इसे करते हैं। आपने अपना वास्तविक कोड नहीं दिखाया है, इसलिए कौन जानता है कि आप क्या कर रहे हैं? मैं आपको विश्वास दिलाता हूं कि यह काम करता है।
मैट

7

में Swift3 और Swift4 आप जोड़कर सेल के आकार को बदल सकते हैं UICollectionViewDelegateFlowLayout और लागू करने में यह इस तरह है:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 100, height: 100)
    }

या यदि UICollectionView प्रोग्राम बनाएं तो आप इसे इस तरह से कर सकते हैं:

    let layout = UICollectionViewFlowLayout()
                    layout.scrollDirection = .horizontal //this is for direction
                    layout.minimumInteritemSpacing = 0 // this is for spacing between cells
                    layout.itemSize = CGSize(width: view.frame.width, height: view.frame.height) //this is for cell size
let collectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)

4

स्विफ्ट 4 स्विफ्ट 4 आईओएस कलेक्शन व्यू कलेक्शनव्यू उदाहरण एक्सकोड लेटेस्ट कोड वर्किंग सैंपल

इसे शीर्ष के डेलिगेट अनुभाग पर जोड़ें

UICollectionViewDelegateFlowLayout

और इस फ़ंक्शन का उपयोग करें

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let width = (self.view.frame.size.width - 20) / 3 //some width
    let height = width * 1.5 //ratio
    return CGSize(width: width, height: height)
}

///// नमूना पूरा कोड

स्टोरीबोर्ड में कलेक्शन व्यू और कलेक्शन सेल बनाने के लिए कलेक्शन का संदर्भ
@IBOutlet कमजोर var cvContent: UICollectionView के रूप में दें!

इसे View कंट्रोलर में पेस्ट करें

 import UIKit

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

    var arrVeg = [String]()
    var arrFruits = [String]()
    var arrCurrent = [String]()
    
    @IBOutlet weak var cvContent: UICollectionView!
    
  
    
    override func viewDidLoad() {
        super.viewDidLoad()
        arrVeg = ["Carrot","Potato", "Tomato","Carrot","Potato", "Tomato","Carrot","Potato", "Tomato","Carrot","Potato", "Tomato"]
        
        arrVeg = ["Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange","Mango","Papaya","Orange"]
        
        
        arrCurrent = arrVeg
    }
    //MARK: - CollectionView
    


    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let width = (self.view.frame.size.width - 20) / 3 //some width
        let height = width * 1.5 //ratio
        return CGSize(width: width, height: height)
    }
    
    func numberOfSections(in collectionView: UICollectionView) -> Int {

        return 1
    }
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        
        
        return arrCurrent.count
    }
    
    
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! ContentCollectionViewCell
        cell.backgroundColor =  UIColor.green
        return cell
    }
}

2

नीचे विधि का प्रयास करें

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSize(width: 100.0, height: 100.0)
}

2

प्रोग्राम 5 को स्विफ्ट करें

lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .horizontal

        //Provide Width and Height According to your need
        let cellWidth = UIScreen.main.bounds.width / 10
        let cellHeight = UIScreen.main.bounds.height / 10
        layout.itemSize = CGSize(width: cellWidth, height: cellHeight)

        //You can also provide estimated Height and Width
        layout.estimatedItemSize = CGSize(width: cellWidth, height: cellHeight)

        //For Setting the Spacing between cells
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0

        return UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    }()

1
**Swift 5**
To make this work you have to do the following.

Add these protocols

 - UICollectionViewDelegate


 - UICollectionViewDataSource


 - UICollectionViewDelegateFlowLayout

Your code will then look like this

extension YourViewController: UICollectionViewDelegate {
    //Write Delegate Code Here
}

extension YourViewController: UICollectionViewDataSource {
    //Write DataSource Code Here
}

extension YourViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: screenWidth, height: screenWidth)
    }
}

Now the final and crucial step to see this take effect is to go to your viedDidLoad function inside your Viewcontroller.

    override func viewDidLoad() {
        super.viewDidLoad()
        collection.dataSource = self // Add this
        collection.delegate = self // Add this

        // Do any additional setup after loading the view.
    }

Without telling your view which class the delegate is it won't work.

1

2020, बिल्कुल सरल तरीका:

class YourCollection: UIViewController,
     UICollectionViewDelegate,
     UICollectionViewDataSource {

आपको "UICollectionViewDelegateFlowLayout" या जोड़ना होगा, कोई स्वत: पूर्ण नहीं है:

class YourCollection: UIViewController,
     UICollectionViewDelegate,
     UICollectionViewDataSource,
     UICollectionViewDelegateFlowLayout {

टाइप करें "sizeForItemAt ..."। हो गया!

class YourCollection: UIViewController,
     UICollectionViewDelegate,
     UICollectionViewDataSource,
     UICollectionViewDelegateFlowLayout {

     func collectionView(_ collectionView: UICollectionView,
      layout collectionViewLayout: UICollectionViewLayout,
      sizeForItemAt indexPath: IndexPath) -> CGSize {

     return CGSize(width: 37, height: 63)
}

बस।

उदाहरण के लिए, यदि आप चाहते हैं "प्रत्येक सेल पूरे संग्रह दृश्य को भरता है":

     guard let b = view.superview?.bounds else { .. }
     return CGSize(width: b.width, height: b.height)

0

दूसरा तरीका है कि फ्लो लेआउट में सीधे वैल्यू सेट करें

    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = CGSize(width: size, height: size)

0

इसलिए आपको स्टोरीबोर्ड से विशेषता के लिए संग्रह के लिए सेट करने की आवश्यकता है सेल सेक्शन अनुमान में साइज से कोई भी नहीं, और आपके ViewController में आपको इस विधि को लागू करने के लिए प्रतिनिधि विधि की आवश्यकता थी: optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize


0

UICollectionViewDelegateFlowLayout पद्धति का उपयोग करने का प्रयास करें। Xcode 11 या बाद के संस्करण में, आपको स्टोरीबोर्ड से कोई नहीं करने के लिए अनुमानित आकार निर्धारित करने की आवश्यकता है।

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: 
UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let padding: CGFloat =  170
    let collectionViewSize = advertCollectionView.frame.size.width - padding
    return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
}

0

एक सरल तरीका:

यदि आपको एक साधारण निश्चित आकार चाहिए :

class SizedCollectionView: UIICollectionView {
    override func common() {
        super.common()
        let l = UICollectionViewFlowLayout()
        l.itemSize = CGSize(width: 42, height: 42)
        collectionViewLayout = l
    }
}

यही सब है इसके लिए।

स्टोरीबोर्ड में, बस क्लास को UICollectionView से SizedCollectionView में बदलें।

परंतु !!!

आधार वर्ग पर ध्यान दें "UI 'I' CollectionView" है। शुरुआती के लिए 'मैं'।

एक संग्रह दृश्य में एक इनिशलाइज़र जोड़ना आसान नहीं है। यहाँ एक आम तरीका है:

संग्रह दृश्य ... इनिशलाइज़र के साथ:

import UIKit

class UIICollectionView: UICollectionView {
    private var commoned: Bool = false
    
    override func didMoveToWindow() {
        super.didMoveToWindow()
        if window != nil && !commoned {
            commoned = true
            common()
        }
    }
    
    internal func common() {
    }
}

अधिकांश परियोजनाओं में, आपको "एक इनिशलाइज़र के साथ एक संग्रह दृश्य" की आवश्यकता होती है। तो आप शायद वैसे भी होगा UIICollectionView(अपनी परियोजना में अतिरिक्त मैं शुरुआती के लिए ध्यान दें!)।


0

5 स्विफ्ट, प्रोग्राममैटिक यूआईसीओलेक्शन व्यू सेटिंग सेल की चौड़ाई और ऊंचाई

// MARK: MyViewController

final class MyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    
    private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
        let layout = UICollectionViewFlowLayout()
        let spacing: CGFloat = 1
        let numOfColumns: CGFloat = 3
        let itemSize: CGFloat = (UIScreen.main.bounds.width - (numOfColumns - spacing) - 2) / 3
        layout.itemSize = CGSize(width: itemSize, height: itemSize)
        layout.minimumInteritemSpacing = spacing
        layout.minimumLineSpacing = spacing
        layout.sectionInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)
        return layout
    }()
    
    private lazy var collectionView: UICollectionView = {
        let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: collectionViewLayout)
        collectionView.backgroundColor = .white
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.translatesAutoresizingMaskIntoConstraints = false
        return collectionView
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        configureCollectionView()
    }
    
    private func configureCollectionView() {
        view.addSubview(collectionView)
        NSLayoutConstraint.activate([
            collectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            collectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
            collectionView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
            collectionView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor)
        ])
        collectionView.register(PhotoCell.self, forCellWithReuseIdentifier: "PhotoCell")
    }
    
    // MARK: UICollectionViewDataSource

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 20
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCell", for: indexPath) as! PhotoCell
        cell.backgroundColor = .red
        return cell
    }
    
}

// MARK: PhotoCell

final class PhotoCell: UICollectionViewCell {
    
    lazy var imageView: UIImageView = {
        let imageView = UIImageView()
        imageView.contentMode = .scaleAspectFill
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.layer.masksToBounds = true
        return imageView
    }()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init?(coder:) not implemented")
    }
    
    func setupViews() {
        addSubview(imageView)
        NSLayoutConstraint.activate([
            topAnchor.constraint(equalTo: topAnchor),
            bottomAnchor.constraint(equalTo: bottomAnchor),
            leadingAnchor.constraint(equalTo: leadingAnchor),
            trailingAnchor.constraint(equalTo: trailingAnchor)
        ])
    }
    
}

-4

यह मेरा संस्करण है, अपनी आवश्यकता के अनुसार सेल आकार प्राप्त करने के लिए अपना उपयुक्त अनुपात खोजें।

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
return CGSizeMake(CGRectGetWidth(collectionView.frame)/4, CGRectGetHeight(collectionView.frame)/4); 
} 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.