What is cross-platform development anyway? If you need your application to run on multiple operating systems at once with a minimum amount of manpower, this is probably what you will resort to. You develop one program, write one code, and it runs on all supported platforms. Convenient! But it is worth distinguishing between cross-platform and native.
In short, cross-platform is the ability of software to work with multiple hardware platforms or operating systems. Native software, in turn, is written to work on a specific hardware or software platform. From this we can conclude: if your program will work with hardware, then most likely even in the cross-platform program you will have to write native functionality for a specific platform.
What is the advantage of cross-platform development? Firstly, you need less people (no need to have a DotNet developer, a Swift/objective C developer and all of them), secondly, you cover more devices -> more people will be able to use your program.
Also this principle has its disadvantages – poor usability, the optimization will also be worse than the same program written for a specific platform. But sometimes it happens that you really need your application to support multiple platforms, but you can’t develop for each one. In this case you can use already existing frameworks and technologies for cross-platform GUI development.