Swift iOS - представление коллекции тегов
Я пишу свое первое приложение для iOS и хочу просто ответить, какое решение для этого наиболее известно? Это простая коллекция тегов. Я уже просмотрел интернет, но ничего не нашел. Я думаю, что лучший способ - это создать собственную структуру кнопок?
Вот чего я хочу добиться:
3 ответа
Решение
Я решаю эту проблему, используя представление коллекции.
class FilterController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
@IBOutlet var collectionView: UICollectionView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 150, left: 10, bottom: 150, right: 10)
// layout.itemSize = CGSize(width: 90, height: 45)
layout.itemSize = CGSizeFromString("Aloha")
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
collectionView!.dataSource = self
collectionView!.delegate = self
collectionView!.registerClass(TagCell.self, forCellWithReuseIdentifier: "TagCell")
collectionView!.backgroundColor = UIColor.whiteColor()
self.view.addSubview(collectionView!)
}
Я реализовал представление тегов, используя только представление коллекции.
https://st a ckru.com/images/d4236aa8bb98e5de4d246607c835537f67b9fd38.jpg
Вот ссылка на github.
Иногда вам нужно сделать это самостоятельно:
let titles = ["Freedom", "God", "Happiness", "Imagination", "Intelligence", "Other"]
var buttons = [UIButton]()
func createButton(withTitle title: String) -> UIButton {
let button = UIButton(type: .System)
button.setTitle(title, forState: .Normal)
button.titleLabel?.font = UIFont.systemFontOfSize(15.0, weight: UIFontWeightRegular)
button.layer.borderWidth = 0.5
button.layer.borderColor = UIColor.lightGrayColor().CGColor
button.contentEdgeInsets = UIEdgeInsetsMake(5.0, 15.0, 5.0, 15.0)
button.sizeToFit()
return button
}
for title in titles
{
buttons.append(createButton(withTitle: title))
}
func createButtonGrid(withButtons buttons: [UIButton]) {
let offset = 5.0
var x = 0.0, y = 0.0, row = 0.0
let viewFrame = CGRectMake(0.0, 0.0, 250.0, 200.0)
let view = UIView(frame: viewFrame)
view.backgroundColor = UIColor.whiteColor()
for idx in 0..<buttons.count
{
let button = buttons[idx]
row += Double(button.frame.width) + offset
if row < Double(viewFrame.width)
{
x = idx == 0 ? offset : row - Double(button.frame.width)
}
else
{
x = offset
row = Double(button.frame.width) + offset
y += Double(button.frame.height) + offset
}
let frame = CGRectMake(CGFloat(x), CGFloat(y), button.frame.width, button.frame.height)
button.frame = frame
view.addSubview(button) //quick look
}
}
createButtonGrid(withButtons: buttons)
Просто динамически добавляйте кнопки в superView и меняйте фон в соответствии с вашими требованиями.