Всем привет!
Иду по урокам в курсе из подписки с уроками по TableView и CollectionView
Пишу приложение по урокам с собаками и решил попробовать добавить функцию переключения вида с 2-х плиток в ряд на 3 плитки. Скрин изображения ниже
Приложение просто выводит изображения собак плиткой через CollectionView
Для того чтобы сделать такой переключатель, сделал Bar Button Item, присвоил ему изображение square.grid.2x2.fill
Написал функцию, которая меняет отоборажение и задает новую картинку кнопке. Все работает, но появилась проблема, которую не смог решить своими силами - при нажатии на кнопку появляется второе изображение и size кнопки сужается:
- https://prnt.sc/1hyi6jw
-
https://prnt.sc/1hyi8ss
Кнопку создаю и вставляю кодом, не через storyboard
override func viewDidLoad() {
super.viewDidLoad()
let button: UIButton = UIButton(type: .custom)
button.setImage(UIImage(systemName: "square.grid.2x2.fill"), for: .normal)
button.addTarget(self, action: #selector(PhotosCollectionViewController.layoutChoose), for: .touchUpInside)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
Далее функция экшна на кнопке:
@objc func layoutChoose(sender: UIButton) {
if itemsPerRow == 3 {
sender.setBackgroundImage(UIImage(systemName: "square.grid.3x2.fill"), for: .normal)
itemsPerRow = 2
collectionView.reloadData()
} else {
sender.setBackgroundImage(UIImage(systemName: "square.grid.2x2.fill"), for: .normal)
itemsPerRow = 3
collectionView.reloadData()
}
}
UPD
Попробовал создать кнопку в сториборде и задать функции через аутлет, но итог такой же