Giter Site home page Giter Site logo

Comments (9)

gerkov77 avatar gerkov77 commented on May 20, 2024 2

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.
And of course, backgroundColor property is accessible in the custom class' init() from that on.

from jzcalendarweekview.

gerkov77 avatar gerkov77 commented on May 20, 2024 1

Yes you are right, it works for you because you choose the systembackground color and it's correctly changed in dark appearance by iOS.
The problem, for me, is that I don't catch a notification to change the appearance inside the class, so I can't use custom colour for the background and also for the label.

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..

from jzcalendarweekview.

twilightDD avatar twilightDD commented on May 20, 2024

@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

  • JZColumnHeader
  • JZCornerHeader
  • JZRowHeader
  • JZAllDayHeader

and the corresponding background classes

  • JZColumnHeaderBackground
  • JZRowHeaderBackground
  • JZAllDayHeaderBackground
  • JZAllDayCorner

the same way as shown in the example above.

Best regards!
Peter

Bildschirmfoto 2021-03-31 um 23 45 30

from jzcalendarweekview.

spiccinocchi avatar spiccinocchi commented on May 20, 2024

Great implementation,
but there is a problem if you change the apparence from ligth to dark while you are using the app. Have you found a solution for this issue?

from jzcalendarweekview.

twilightDD avatar twilightDD commented on May 20, 2024

Great implementation,
but there is a problem if you change the apparence from ligth to dark while you are using the app. Have you found a solution for this issue?

Well, I don't exactly understand what you mean ...

from jzcalendarweekview.

spiccinocchi avatar spiccinocchi commented on May 20, 2024

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.
I hope is now more clear my problem

from jzcalendarweekview.

twilightDD avatar twilightDD commented on May 20, 2024

Thank you! I just works fine for me.

(I don't catch a notification to change the appearance, though.)

RPReplay_Final1618990805.MP4

from jzcalendarweekview.

spiccinocchi avatar spiccinocchi commented on May 20, 2024

Yes you are right, it works for you beacuse you choose the systembackground color and it's correctly changed in dark appearance by iOS.
The problem, for me, is that I don't catch a notification to change the appearance inside the class, so I can't use custum color for the background and also for the label.

from jzcalendarweekview.

twilightDD avatar twilightDD commented on May 20, 2024

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?

from jzcalendarweekview.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.