Bundle Identifier Tip for App Development

Are you a developer embarking on a new iOS/Android project? Here’s a crucial mistake to avoid from the start. Many developers, myself included, have fallen into the trap of naming the bundle identifier of their app using their personal name. I’m sharing this experience so you can sidestep this common error.

Animating CustomPainter is easy. We just need to repaint the whole canvas on each AnimationController.value change.

Flutter Banner Ribbon Debug Widget Badge

Banner widget is a great thing to inform users about the environment in which the application works. For example, we want to show BETA or TESTFLIGHT ribbon for beta builds, just like the default DEBUG banner warning is displayed when the app is built in debug mode.

Why Flutter is better than Swift

I know the headline is misleading: Flutter is a framework, and Swift is a programming language. It should be “Why Dart/Flutter is better than Swift/Standard iOS SDK”. In this article I’m comparing Flutter with a classical way to develop iOS apps: using Xcode, Swift and iOS SDK.

How to hire a good iOS developer

You’ve decided to wrap your idea into the iOS app, but don’t want a negligent developer to ruin the project and turn it into a waste of time and money? Here are a few quick tips how to understand if a developer is really good or not.

Let’s say we want to play a track from the server using AVKit’s AVPlayer. However, it’d be quite expensive to download the track over and over again. To reduce network traffic and preserve iPhone’s battery it’s better to cache the downloaded track on the user’s device after it’s downloaded in the first time. As we know, reading from disk is much cheaper in terms of resources than downloading a file over the network.

UITableView Prefetching

One day you face a cruel reality: you need to create a lot of In-app purchases (IAPs) on iTunes Connect. You could do that manually, but, obviously, that’s not an optimal way. Why suffer if we can automate this? We’re developers, after all.

Recently I faced a problem in one of my ongoing projects: we wanted to display an animation with sound on iPad. First, I planned to simply use UIImageView and CAKeyframeAnimation with a sequence of sprites passed to it, but it’s very hard to synchronize sound with CAKeyframeAnimation.

Then I thought: SpriteKit has SKActions, which could handle both sprite sequence animation and sounds! The idea was great, I quickly implemented a prototype of the scene, but it was declined either. The point is we have a large sequence (~70 pieces) of large sprites (~1400px X 1100px). So each sequence frame ate (1400px * 1100px * 8 bits/channel) / 1024*1024 = 10.68 MBytes of RAM. 70 pieces took more than 700 MBytes, which was unacceptable for older iPads. SpriteKit wasn’t a good option in my case.

Apparently, video would fit our needs better, as we want to play both rich animation and sound. The only problem was to have the video with transparent background somehow. As you will see, this is possible and works just great.

All of us sometimes need to display overlay views in our iOS apps: informational or error messages, confirmation screens and so on. Usually I use child view controllers for that, and I have to write the boilerplate code of adding and presenting overlays all the time. It’s definitely a field for optimization!

Sometimes we need to reuse the same UI element on few different screens. Let’s say you want to present your custom navigation bar or tab bar. The usual approach is to use child view controllers: create a separate custom UIViewController for navigation bar, then add it as a child view controller. In this article I’ll explain how to reduce the amount of boilerplate code needed to handle this child view controller and make it highly reusable.

Note: by reusing here I don’t mean reusing an instance of the child view controller, but rather reusing the child view controller class.

In this article I’m going to cover how to find the closest point on UIBezierPath for an arbitrary point on the plot. I have found a theoretical basis of the implementation in a great material about Bezier paths: A Primer on Bézier Curves - Projecting a point onto a Bézier curve. It explains how to find the projection of a random point onto a curve with using lookup table approach. Lookup table is a sequence of points along the path. Also the author provides a JavaScript implementation using his own library.

UITableView Prefetching

In iOS 10 Apple has introduced prefetching API for UITableView and UICollectionView. In this article I’d like to cover what is it for and how to properly use prefetching for UITableView.

iOS Social Network App Architecture

Recently I’ve released iOS social network app template called Socium. Here I’d like to share with you my knowledge learned from developing it.

Parse Background Jobs

One of important features missing in Parse Server is background scheduled job functionality. In this doc Parse Team recommends us to use kue for this purpose. Well, let’s check it out!

kue is open source Node.js module, developed for managing a priority job queue. However, it doesn’t allow to schedule jobs out of the box, so we’ll need another utility called kue-scheduler for this. Both of them are easy to install and use.

Mobile project management

I’ve been freelancing for a few years and working with many people, who need to bring their brilliant idea of iOS app to life. Unfortunately, not all of them know how to organize things and do a good project management. This knowledge is very useful for iOS project of any size, it saves your time, your nerves and your money.

In this article I’d like to point few common mistakes and give a few tips how to do better.

DCKit controls

I keep looking for ways of making the process of creating iOS apps a bit simpler and faster. I’m also trying to avoid code related to UI elements as much as possible, and move this effort to Xcode Interface Builder. Fortunately, Xcode offers some nice possibilities for this.

I created a useful set of UI controls called DCKit. They use IBInspectable/IBDesignable features Apple introduced earlier in Xcode 6. DCKit gives you much more powerful controls than a standard UIButtons/UITextFields etc. Using DCKit you would be able to modify a control’s properties, which are not exposed to Interface Builder in usual cases.

Lightning with Sprite Kit

Have you ever tried to implement such effect as lightning for your iOS game? In this article I’m going to describe three ways I found to create a lightning effect with a decent quality:

Subscribe via RSS