Hey guys. I am having an issue with one of my projects.
UICollectionViewCell in my UICollectionView has a plus button with the systemImage "plus". When clicked, its changing to systemImage "checkmark".
The issue is, clicking one button, changes UI for every fifth cell.
On top of that, animation does not finish. Alpha goes to 0, and then the image is being changed, alpha should go to 1 but never gets there. It stops somewhere between 0.7-0.8.
Here is my animation block:
private func animateButtonView(_ viewToAnimate: UIView) {
UIView.animate(withDuration: 0.2, animations: {viewToAnimate.alpha = 0}) { [weak self] (true) in
guard let self = self else { return }
switch true {
case true:
DispatchQueue.main.async {
self.addToFavoritesButton.setImage(SFSymbolsAsImg.checkmark, for: .normal)
}
UIView.animate(withDuration: 0.2, animations: {viewToAnimate.alpha = 1} )
case false:
return
}
}
}
Animation block is executed in my objective function that is called in addTarget for a button.
I've asked that question on many forums and got not much.
I'll appreciate any help. Many thanks!
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
Hey guys. Cut to the chase. Trynna create some cells in my CollectionView. Cells will populate with the object of type Tweet.
Some Tweet(s) has urlToExpand, some has value nil. Based on that, button "See more" will be visible or nah. I am certain that the data is passed correctly into Cell as I have checked it with the print. However button works randomly. Sometimes it does display, sometimes it doesn't. I have no idea why.
Here is my dataSource update in VC
private func configureDataSource() {
				dataSource = UICollectionViewDiffableDataSource<Section, Tweet>(collectionView: collectionView, cellProvider: { (collectionView, indexPath, tweet) -> UICollectionViewCell? in
						let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SearchTweetsCell.reuseId, for: indexPath) as! SearchTweetsCell
						
						cell.set(with: tweet, user: self.user)
						cell.delegateSafari = self
						
						return cell
				})
				
				dataSource.supplementaryViewProvider = { (collectionView, kind, indexPath) in
						let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: SearchTweetsVCCollectionHeader.reuseId, for: indexPath) as! SearchTweetsVCCollectionHeader
						header.set(with: self.user)
						return header
				}
		}
Here is the function from collectionViewCell that I am calling in my cv while populating cells.
func set(with usersTweet: Tweet, user: User) {
				self.user															 = user
				tweet																	 = usersTweet
				urlString															 = usersTweet.urlToExpandWithSafari
				tweetBodyLabel.text										 = usersTweet.tweetText
				timeDateLabel.text											= usersTweet.createdAt.formatToTwitterPostDate()
				
				sharesView.set(itemInfoType: .shares,	 with: usersTweet.retweetCounter.convertToKMFormatStr())
				likesView.set(itemInfoType: .likes,		 with: usersTweet.likesCounter.convertToKMFormatStr())
				
				guard tweet.urlToExpandWithSafari != nil else {
						DispatchQueue.main.async { self.goSafariButton.removeFromSuperview() }
						goSafariButton.isEnabled = false
						return
				}
				DispatchQueue.main.async { self.goSafariButton.setTitle(TweetStrings.seeFull, for: .normal) }
		}
Many thanks for any help.