Как внести изменения в файлcocopods?

Я использую эту библиотеку для своего проекта - https://github.com/filletofish/CardsLayout, и я попробовал чтобы изменить размер элементов в CardsCollectionViewLayout.swift, но это не работает ... он остается прежним.

Я также пытался внести изменения, разветвив библиотеку (как описано здесь Technerd: Редактирование заблокированных файлов из фреймворка CocoaPods), но это тоже не работает.

Есть ли другой способ внести изменения в поды? Или я просто делаю что-то не так в этих двух предыдущих способах

Редактировать:

   @IBOutlet var collectionView: UICollectionView!
    let cardLayout = CardsCollectionViewLayout()

    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView.collectionViewLayout = CardsCollectionViewLayout()
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.isPagingEnabled = true
        collectionView.showsHorizontalScrollIndicator = false
        collectionView.isHidden = true
        // cardLayout.itemSize = CGSize(width: 50, height: 50)
        collectionView.collectionViewLayout = cardLayout
        searchInput.delegate = self
    }


person AF6890    schedule 09.02.2020    source источник
comment
вам нужно скопировать классы файлов этого модуля и вставить его в свой проект (если вы хотите редактировать файлы модулей)   -  person Siddhant Nigam    schedule 09.02.2020


Ответы (1)


Вы должны показать код, который вы написали для настройки макета. Это упростит вам помощь.

Поместите код, связанный с collectionView, в блок didSet вашего свойства collectionView.
Следующий фрагмент кода должен вам подойти:

@IBOutlet weak var collectionView: UICollectionView! {  
   didSet {  
      let cardLayout = CardsCollectionViewLayout()  
      cardLayout.itemSize = CGSize(width: 50, height: 50)  
      collectionView.collectionViewLayout = cardLayout  
      collectionView.dataSource = self  
      collectionView.delegate = self  
      collectionView.isPagingEnabled = true  
      collectionView.showsHorizontalScrollIndicator = false  
      collectionView.isHidden = true  
   }  
}  

Никогда не меняйте файл в модуле! Ваши изменения будут потеряны при обновлении модуля!
Если вам когда-нибудь понадобится изменить поведение модуля, у вас есть следующие варианты:

  • напишите расширение, если это соответствует вашим потребностям
  • использовать подклассы
  • если вам нужно внести большие изменения, используйте вилку, как вы уже пробовали
  • или вы можете добавить исходные файлы модулей в базу кода вашего проекта. Но я бы не рекомендовал этого, потому что это затруднит получение прибыли от обновлений, опубликованных в исходном коде модулей.
person Robin Schmidt    schedule 09.02.2020
comment
Спасибо за ответ! Теперь я понимаю, почему и как это сделать. Однако в проекте я получаю найденный ноль при развертывании необязательной ошибки значения в этой строке кода, которая находится в моем представленииDidLoad(). cardCollection.itemSize = CGSize(width: 50, height: 50) Я могу отредактировать свой пост с той частью кода, которую вы запрашиваете. - person AF6890; 09.02.2020
comment
@AF6890 AF6890 Как вы инициализируете свой collectionView и cardLayout? Используете ли вы файл раскадровки/xib? Если ваш collectionView/layout является необязательным, безопасно разверните его перед настройкой свойства itemSize. - person Robin Schmidt; 09.02.2020
comment
@AF6890 cardCollection это ваш экземпляр collectionView или CardsLayout? Можете ли вы показать, как вы инициализируете это? - person Robin Schmidt; 09.02.2020
comment
@AF6890 AF6890 Я отредактировал свой ответ. Поместите код настройки collectionView в блок didSet свойства colletionView, как это сделал я. Это предотвращает вашу ошибку nil при разворачивании необязательно. Ваш let cardLayout = CardsCollectionViewLayout() не нужен, за исключением того, что вы ссылаетесь на этот макет где-либо еще в своем коде. Если это так, удалите мою первую строку в блоке didSet. - person Robin Schmidt; 09.02.2020
comment
Спасибо, теперь работает! просто нужно было поставить collectionView.collectionViewLayout = cardLayout перед cardLayout.size :) - person AF6890; 09.02.2020