Open jfbomber opened 3 years ago
i'am facing the same issue the style part of calendar is not working.
let style = CalendarView.Style()
style.cellShape = .round
style.cellColorDefault = UIColor.clear
style.cellTextColorDefault = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
style.cellColorToday = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
style.cellTextColorToday = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
style.headerTextColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
style.headerBackgroundColor = UIColor.white
style.cellEventColor = UIColor.clear
style.cellTextColorWeekend = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
style.firstWeekday = .sunday
style.weekdaysBackgroundColor = UIColor.white
style.cellColorOutOfRange = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
style.cellSelectedBorderColor = UIColor(red: 193.0/255.0, green: 165.0/255.0, blue: 139.0/255.0, alpha: 1.0);
style.cellSelectedColor = UIColor(red: 193.0/255.0, green: 165.0/255.0, blue: 139.0/255.0, alpha: 1.0);
style.cellSelectedTextColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
style.cellSelectedBorderWidth = 1.0
@jibrank Have you had any luck updating it?
I have tried editing the project code but it seems to be something with the update of the UICollectionView on iOS 15.
@jfbomber I find the problem. In apple's document, they said:
You typically do not set the value of this property directly. Changing the value of this property programmatically does not change the appearance of the cell. The preferred way to select the cell and highlight it is to use the selection methods of the collection view object.
and in Calender, it called cell.isSelected and force reload the collectoinView.
It makes UICollectionView didn't show the style of the cell. If you want to fix it, you can change these things. Like disable selectionStyle and create a new method for cell to update style. And if you want to use multiSelection, you can set the collectionView's multiSelection property.
@jfbomber You can see the fix code in https://github.com/zkhCreator/CalendarView/pull/1
@zkhCreator I integrated your code, still it's not showing Selected Cells Border :( .
@nik6018 It did work for me. I just used his forked version of the branch
pod 'KDCalendar', :git => 'https://github.com/zkhCreator/CalendarView'
@jfbomber Thanks for informing. @zkhCreator Can you please confirm if any more changes are needed to be included other than the commit mentioned in the above comment ?
@nik6018 the border color is ok in my repo. Maybe you should use the master branch, don't copy the merge request code, because I fix some bug not in the merge request. here is the screenshoot.
@zkhCreator seems like you correct the issue , but you forget to upgrade the s.version in "KDCalendar.podspec", so when users try to update pods, cocoapods can't recognise that a new version is available. upgrade the version number "KDCalendar.podspec", then users can update the pod
@khedheri you can use my repo's master branch, because of my repo is not the main repo of Calendar repo.If I update the podspec, it will influence the version of main repo
EDIT :
After further inspection it seems like if I make the allowSelection
property on CalendarView
false programmatic selection doesn't work (it used to work on pre-iOS15).
My requirement is a bit unusual as in I want programmatic selection but disable selection via user input :(
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
@zkhCreator I tried by downloading your master branch but still I am not getting the result I want :(
If I wasn't clear I am trying to select the date programmatically using calendarView.selectDate(_:)
method and want to display a border around the selected cell.
Selecting the dates by directly tapping on the Calendar View is working as expected, but in my case I only want to select the dates programmatically.
While checking the class CalendarDayCell
the isSelected
computed property contains the following lines
switch isSelected {
case true:
self.bgView.layer.borderColor = style.cellSelectedBorderColor.cgColor
self.bgView.layer.borderWidth = style.cellSelectedBorderWidth
self.bgView.backgroundColor = style.cellSelectedColor
The color & border color applied on the bgView
doesn't show for some reason, if dates are selected programmatically.
But If I copy the above 3 lines and put them in the updateTextColors()
method inside the isSelected
if condition, then selected cell border color shows properly like before iOS 15.
Any idea why this is the case ?
@zkhCreator thank you so much for fixing the code👍
@zkhCreator i used your code but few things are not working as it was working before
@nik6018 you can use this, it has same functionalities https://github.com/WenchaoD/FSCalendar
iOS 15.3 issue was solved, but why, iOS 15.3 just security update
https://stackoverflow.com/a/31387259
Here is the solution:
dayCell.isSelected = selectedIndexPaths.contains(indexPath)
if dayCell.isSelected {
collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally)
}
@mmick66
Please write a RP. Thank you.
@mmick66 I see a new working PR which fixed the issue. So you can choose which one is better. I vote for andygeers/ios15 version. So, do you still need my PR?
Merge pull request #143 from andygeers/ios15 2e677a0 Michael Michailidis mmick66@gmail.com 7 дек. 2022 г., 16:45
https://github.com/mmick66/CalendarView/pull/145
Here is a PR with my lines above
The selected color doesn't seem to be working in iOS 15. ` self.calendarView = CalendarView()
`