If you want a desktop experience that comes close to MacOS on Ubuntu, give Budgie Desktop a try; it's developed for Solus:
https://github.com/solus-project/budgie-desktop
...but is available for Ubuntu - you can install it separately, or as it's own distro:
Note that the 18.04 LTS will have the older version of Budgie and not the latest; the latest version is available with 19.04, but won't be available for LTS until 20.04 - though I am sure there's ways of getting it installed if you really wanted to.
I switched to Budgie Ubuntu 18.04 LTS after my super-long-in-the-tooth-modified-to-hell-and-back Ubuntu 14.04 LTS install face-planted after I tried to install a new version of the NVidia proprietary driver using a very hacked and patched together gcc setup (something I did for an online MOOC where I needed a greater version of C++ than 14.04 supported - not the smartest thing I ever did, but it worked well for a while, and long enough to complete the MOOC).
My 14.04 install started with a Minimal version, then I built it up from there to a look-and-workalike Crunchbang (#!) system. This was done just after #! ceased being supported (after I had played with it and liked it), but before the community picked up the pieces (ultimately resulting in Bunsen Labs distro).
It worked well, but after it finally fell over, I decided I wanted to go a different route on a new install - and Budgie Linux with Ubuntu 18.04 LTS is where I ended up. I couldn't be happier; it allows me a desktop experience that I swear is very close to what I have on the MBP I use at my employer, but I have customized my own way (though I did grab a set of SVGs for a better looking trashcan for Plank). I also had to write a new wallpaper switcher (in python) as I didn't like anything as well that exists. Minor things, though. Overall, it's a great desktop - gives me some freedom to play, but is still beautiful and highly functional.
One thing I'll never do again, though, is install anything that isn't "standalone" in /home or a "deb" package (or something like AppImages); anything that must be compiled from source will either be made into a package to install, or I'll put it on a VM (that's what ultimately led to my old system falling over - too much crap in too many places without any kind of tracking, etc - my fault, ultimately).