-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JZColumnHeaderBackground and JZRowHeaderBackground is always white, and sticks out in dark mode. #121
Comments
Ok, problem solved! I needed to learn how to register my subclasses here. I needed to register MyCustomColumnHeaderBackgroundClass.self with the string: JZDecorationViewKinds.columnHeaderBackground in the custom weekFlowlayout's init function. |
@gerkov77 Thank you! I had the same problem and solved it like this. (It's probably the same way!) class CalendarWeekView: JZBaseWeekView {
//MARK: - JZBaseWeekView Methods
override func setup() {
super.setup()
collectionView.backgroundColor = UIColor.systemBackground // to support Dark Mode
}
override func registerViewClasses() {
super.registerViewClasses()
// overwrite supplementary registers from super.registerViewClasses()
collectionView.register(SOXColumnHeader.self,
forSupplementaryViewOfKind: JZSupplementaryViewKinds.columnHeader,
withReuseIdentifier: JZSupplementaryViewKinds.columnHeader)
/* add register() for other supplementaryViews, too. See below.*/
flowLayout.register(SOXColumnHeaderBackground.self,
forDecorationViewOfKind: JZDecorationViewKinds.columnHeaderBackground)
/* add register() for other decorationViews, too. See below.*/
}
}
// Subclasses for Headers and Backgrounds
class SOXColumnHeader: JZColumnHeader {
public override init(frame: CGRect) {
super.init(frame: .zero)
backgroundColor = .clear // the corresponding background-class will get the correct color
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class SOXColumnHeaderBackground: JZColumnHeaderBackground {
public override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.systemBackground // uses correct color on Dark Mode
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
} I subclassed
and the corresponding background classes
the same way as shown in the example above. Best regards! |
Great implementation, |
Well, I don't exactly understand what you mean ... |
If you start the calendar app while the device is in light mode and set your custom background color and then change it in dark mode, there is no way to change the background again. |
Thank you! I just works fine for me. (I don't catch a notification to change the appearance, though.) RPReplay_Final1618990805.MP4 |
Yes you are right, it works for you beacuse you choose the systembackground color and it's correctly changed in dark appearance by iOS. |
Which color do you use and in which subclass? A different system provided one or a complete custom? |
I was using custom colours -no systemBackrgound stuff- setting two different colour set for dark and light mode. Just set your custom colours in assets and assign it to light and dark modes, then use them with the calendar - there shouldn't be any problem with that.. |
Please, I have no information about where I can access and set the background properties of these reusable views. Also, what method should be overwritten for changing these, or dequeuing my own subclasses for these items .
If anyone could help me out here!
Thanks!
The text was updated successfully, but these errors were encountered: