এই প্রকল্পটি এক্সকোড 10 এবং সুইফট 4.2 দিয়ে পরীক্ষা করা হয়েছে।
একটি নতুন প্রকল্প তৈরি করুন
এটি কেবল একটি একক ভিউ অ্যাপ্লিকেশন হতে পারে।
কোড যুক্ত করুন
একটি নতুন কোকো টাচ ক্লাস ফাইল তৈরি করুন (ফাইল> নতুন> ফাইল ...> আইওএস> কোকো টাচ ক্লাস)। এর নাম দিন MyCollectionViewCell
। আপনি স্টোরিবোর্ডে আপনার ঘরে যোগ করেছেন এমন দর্শনগুলির জন্য এই শ্রেণিটি আউটলেটগুলিকে ধারণ করবে।
import UIKit
class MyCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myLabel: UILabel!
}
আমরা এই আউটলেটটি পরে সংযুক্ত করব।
ভিউকন্ট্রোল.আরউইফ্টটি খুলুন এবং আপনার নীচের সামগ্রীটি নিশ্চিত করুন:
import UIKit
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
let reuseIdentifier = "cell" // also enter this string as the cell identifier in the storyboard
var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48"]
// MARK: - UICollectionViewDataSource protocol
// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
// Use the outlet in our custom class to get a reference to the UILabel in the cell
cell.myLabel.text = self.items[indexPath.item]
cell.backgroundColor = UIColor.cyan // make cell more visible in our example project
return cell
}
// MARK: - UICollectionViewDelegate protocol
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// handle tap events
print("You selected cell #\(indexPath.item)!")
}
}
মন্তব্য
UICollectionViewDataSource
এবং UICollectionViewDelegate
সংগ্রহগুলি অনুসরণ করে যে প্রোটোকলগুলি তা অনুসরণ করে। আপনি UICollectionViewFlowLayout
প্রোগ্রামের মাধ্যমে দর্শনের আকার পরিবর্তন করতে প্রোটোকল যুক্ত করতে পারেন তবে এটি প্রয়োজনীয় নয়।
- আমরা আমাদের গ্রিডে কেবল সরল স্ট্রিং রাখছি তবে আপনি পরে ছবিগুলি করতে পারেন।
স্টোরিবোর্ড সেটআপ করুন
আপনার স্টোরিবোর্ডে ভিউ কন্ট্রোলারে একটি সংগ্রহ দেখুন টেনে আনুন। আপনি যদি চান তবে এটি প্যারেন্ট ভিউ পূরণ করতে বাধা যুক্ত করতে পারেন।
নিশ্চিত করুন যে অ্যাট্রিবিউট ইন্সপেক্টরটিতে আপনার ডিফল্টগুলিও রয়েছে
কালেকশন ভিউয়ের উপরের বামের ছোট্ট বক্সটি একটি সংগ্রহ ভিউ সেল। আমরা এটিকে আমাদের প্রোটোটাইপ সেল হিসাবে ব্যবহার করব। ঘরে একটি লেবেল টেনে আনুন এবং এটি কেন্দ্র করুন। আপনি চাইলে কক্ষের সীমানা পুনরায় আকার দিতে পারেন এবং লেবেলটিকে কেন্দ্র করে প্রতিবন্ধকতা যুক্ত করতে পারেন।
সংগ্রহ ভিউ সেলের জন্য বৈশিষ্ট্য পরিদর্শকের আইডেন্টিফায়ার বাক্সে "সেল" (উদ্ধৃতি ব্যতীত) লিখুন। দ্রষ্টব্য যে এটি let reuseIdentifier = "cell"
ভিউকন্ট্রোলআর সুইফটে একই মান ।
এবং কক্ষের জন্য পরিচয় পরিদর্শকটিতে, শ্রেণীর নামটি সেট করুন MyCollectionViewCell
, আমরা তৈরি আমাদের কাস্টম ক্লাসটি।
আউটলেট হুক আপ
- সংগ্রহটি কক্ষে লেবেল হুক
myLabel
মধ্যে MyCollectionViewCell
বর্গ। (আপনি নিয়ন্ত্রণ-টানতে পারেন ।)
- সংগ্রহ দেখুন হুক
delegate
এবং dataSource
দেখুন কন্ট্রোলার করতে। (ডকুমেন্টের আউটলাইনে কালেকশন ভিউতে ডান ক্লিক করুন Then তারপরে ভিউ কন্ট্রোলারের কাছে যোগ তীরটি ক্লিক করুন এবং টেনে আনুন))
সমাপ্ত
কক্ষের লেবেলটিকে কেন্দ্র করে সীমাবদ্ধতা যুক্ত করার পরে এবং পিতামাতার দেয়ালে কালেকশন ভিউটি পিন করার পরে দেখতে দেখতে এটি দেখতে কেমন।
উন্নতি করা
উপরের উদাহরণটি কাজ করে তবে এটি কুরুচিপূর্ণ। এখানে কয়েকটি জিনিস যা আপনি খেলতে পারেন তা এখানে:
পেছনের রং
ইন্টারফেস বিল্ডারে, আপনার সংগ্রহ দেখুন> বৈশিষ্ট্য পরিদর্শক> দেখুন> পটভূমিতে যান ।
কক্ষের ব্যবধান
কক্ষগুলির মধ্যে ন্যূনতম ব্যবধানকে একটি ছোট মানকে পরিবর্তন করা আরও ভাল দেখায়। ইন্টারফেস বিল্ডারে, আপনার সংগ্রহ দেখুন> আকার পরিদর্শক> নূন্যতম ব্যবধানে যান এবং মানগুলি আরও ছোট করুন। "সেলগুলির জন্য" হ'ল অনুভূমিক দূরত্ব এবং "লাইনগুলির জন্য" উল্লম্ব দূরত্ব।
ঘরের আকৃতি
আপনি যদি গোলাকার কোণ, একটি সীমানা এবং এর মতো চান তবে আপনি ঘরের সাথে চারদিকে খেলতে পারেন layer
। এখানে কিছু নমুনা কোড। আপনি cell.backgroundColor = UIColor.cyan
উপরের কোডের পরে এটি সরাসরি রাখবেন ।
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8
স্তরটি আপনি যে স্তরটি করতে পারেন তার জন্য এই উত্তরটি দেখুন (ছায়া, উদাহরণস্বরূপ)।
আলতো চাপলে রঙ পরিবর্তন করা
কোষগুলি টেপগুলিতে দর্শনীয়ভাবে প্রতিক্রিয়া জানায় এটি আরও ভাল ব্যবহারকারীর অভিজ্ঞতা অর্জন করে। এটি অর্জনের একটি উপায় হ'ল ঘরের স্পর্শ করার সময় পটভূমির রঙ পরিবর্তন করা। এটি করতে আপনার ViewController
ক্লাসে নিম্নলিখিত দুটি পদ্ধতি যুক্ত করুন :
// change background color when user touches cell
func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.red
}
// change background color back when user releases touch
func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.cyan
}
আপডেট বর্ণনটি এখানে:
আরও অধ্যয়ন
এই প্রশ্নোত্তরের UITableView সংস্করণ