When creating custom animations for view controller transitions, it is recommended to use snapshots of the views being animated. However, UIKit doesn’t always make things crystal clear.

If you find yourself with broken autolayout or views incorrectly configured after enabling your transition, try creating the snapshots after adding your view to containerView.

Fork me on GitHub

With the new Swift 4 support, ReCaptcha has finally reached a stable release! Now you can safely use Google’s Invisible ReCaptcha in your app!

Using the JS API, ReCaptcha tries to validate the challenge automatically and retrieve a token, however, if the API can’t ensure the user is human, a challenge may be presented.

Example Gif 2 Example Gif

Fork me on GitHub

I recently had to configure Fastlane to run in the ReCaptcha project. Since we were already uploading coverage reports to Codecov, it would be interesting if we kept using it.

After tweaking a bit with their default command, because Fastlane kept complaining about syntax error, I came up with the following command:

This post is a translation from Portuguese, originally written to the equinociOS magazine.

It’s very easy to find developers that have found some kind of bug in third party code. Whether it’s in an external lib, or in Apple’s SDK. Our code, beautiful and sparkly, with undesired behavior caused by people that aren’t even in our company. At the same time, it isn’t hard finding devs that have reported some of these bugs to those responsible by the code, or that have contributed in any way to its resolution. But, it’s not so easy to find developers that have reported some kind of inconsistency to Apple.

The lack of material on bugreport, may it be motivational or guidelines, emphasize this fact. Frequent are the reports without relevant information, with confidential data, or identical copies of previous reports without addition of any new data.

If you found this post, it’s likely that you have already encountered the following compile error:

error: declarations from extensions cannot be overridden yet

P.S. (I love the “yet” part)

It sucks, but it makes sense that you can’t override stuff from extensions. Or can you? It turns out, you can. It’s a bit hacky though. You have been warned.

Proceed with Caution