Here is how to apply UIVisualEffectView & UIBlurEffect to UITableView, UITableViewCell, UICollectionView, UICollectionViewCell, UIView / View in your Apple iOS / iPadOS or macOS Catalyst App.

As Apple describes UIVisualEffectView & UIBlurView in its support document as follows:

Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. Apply a visual effect view to an existing view and then apply a UIBlurEffect or UIVibrancyEffect object to apply a blur or vibrancy effect to the existing view. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself.

So in simple words, you don’t have to use Adobe Photoshop to get blur effect and fake superimpose on your UIView rather you can get the same effect programmatically for every situation without any hassle.

Note: If you are using UIVisualEffectsView in your app I would strongly suggest you use a system setting called ‘Reduced Transparency’ to condition code it. If the user doesn’t want transparency or Blur or Vibrancy effect for all of the apps in his iPhone or iPad or Mac he can just do it with a single switch in the settings app. Another note view that you are applying effect should preferably be the Popover View Controller. Another thing is to remember to replace the below blue color with the UIColor of your choice with alpha channel transparency.

For UITableView and UITableViewCell, use following code in your UITableViewController’s viewWillAppear function:

(more…)

Continue Reading Post

Here is how to add a mouse hover effect / UIPointer Interactions to your UITableViewCell, UICollectionViewCell, UIButton, UIView using Swift

As Apple describes Pointer Interactions in it’s support document:

Pointer Interactions: Support pointer interactions in your custom controls and views.

iPadOS 13.4 introduces dynamic pointer effects and behaviors that enhance the experience of using an external input device, like a trackpad or mouse, with iPad. As people use an input device, iPadOS automatically adapts the pointer to the current context, providing rich visual feedback and just the right level of precision needed to enhance productivity and simplify common tasks.

Note: UIPointer Interaction is only related to iPad / iPadOS app

Initial Step: Add ‘UIPointerInteractionDelegate’ in your View Controller’s Class Declaration

For UIButton:

Out of Box Implementation:

button.isPointerInteractionEnabled = true

UIView and Custom Implementation for UIButton:

(more…)

Continue Reading Post

Programmatically get iOS, iPadOS, macOS Catalyst Operating System Name and Version and a model identifier of iPhone, iPad, Mac devices.

Programmatically get iOS, iPadOS, macOS Catalyst Operating System Name and Version and a model identifier of iPhone, iPad, Mac devices.

Here is a simple way to programmatically get the operating system name and version of your iOS, iPadOS and macOS.

The below code will also return the value of iPhone, iPad and Mac Model identifier to help you know if it’s MacBook or iMac in Mac’s case or iPhone 11 Pro or iPhone 13 Pro etc.

Step 01: First import IOKit, It is only required for macOS Catalyst app-specific code.

(more…)

Continue Reading Post

Get your Apple iOS (iPhone), iPadOS (iPad) and Mac Catalyst app Version and Build number programmatically.

Here is a small function that I have written that you can use in your iOS, iPadOS or macOS Catalyst app to get your app’s current version and build number and print it on screen whether will on the app’s about or support view.

Function: copy the below function in the Xcode project’s UIViewController Swift class file.

(more…)

Continue Reading Post

Let’s learn how to implement WKWebView in Your iOS, iPadOS and macOS Catalyst app

Before we jump into implementing WKWebView I would first introduce you to why you want to use it. WKWebView helps you when you want to load a webpage inside your app without throwing users to a third party browser outside of your app.

Let’s start coding,

Step 01: First Import WebKit

import WebKit

Step 02: Add ‘WKNavigationDelegate’ to your declaration of ViewController Class

WKNavigationDelegate

It will look something like this:

class ViewController: UIViewController, WKNavigationDelegate {
}

Step 03: Now create two variables for loading webView and one for button which will close webView

var webView: WKWebView!
var closeWebViewUIButton = UIButton(type: .system) as UIButton

Step 04: Now naviagte to your ViewDid Load method

override func viewDidLoad() {
super.viewDidLoad()
}

Step 05: Now in your ViewDidLoad method add the following code, Which will load WKWebView. You can change the URL as per your preference.

(more…)

Continue Reading Post

How to fix and repair anything related to iCloud, App Store, Mac App Store if not at all working correctly on Apple iPhone, iPad and Mac with just one simple solution!

After using your Apple Mac, iPhone or iPad for more than 2 to 3 years upgrading the operating system multiple times you may realise after upgrading system some features like iCloud, Mac / App Store App Downloads and Updates, Keychain Sync, Safari Passwords Sync, Contacts Sync are not working across devices.

Precautions:

1. If you are on iPhone and iPad first backup your device using Mac. And also backup your iPhone and iPad photos using Apple Photos.

2. If you are on Mac backup your Mac using TimeMachine

(more…)

Continue Reading Post

Choosing the right view between UILabel and UITextView to display text inside your iOS, iPadOS and macOS Catalyst App

The dilemma of choosing between UILabel and UITextView starts when you want to display text in your Apple iOS, iPadOS or macOS Catalyst App.

I have even gone through this process of choosing UILabel or UITextView to display text on my app.

So I have made a small numbered list to help you out to choose the right option…

Choose UILable to display text:

  1. If the text word count is small in number
  2. If Top Aligning text to the top border is not the requirement
  3. UILable is not tappable or interactive or selectable to the user’s input
  4. if you want to automatically adjust the font size and fit text to the UILabel bounding box layout

Here is Sample Code for UILabel:

(more…)

Continue Reading Post

When using UINavigationController in your iOS, iPadOS and macOS app sometimes you need to show/hide the navigation bar on a particular view and here is how to do it without disturbing the navigation bar hierarchy in your Main.storyboard file.

Sometimes you want to hide Navigation Bar from a particular view without manually deleting it from Main.storyboard,

So here I have documented how to do it programmatically instead.

Step 01: Copy the following code to your ViewController’s Swift file’s ‘viewWillAppear’ method for which view you want to hide Navigation Bar on its load on your iPhone, iPad or Mac’s (Catalyst) app screen.

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
(more…)

Continue Reading Post

How programmatically add Fab (Floating Action Button) Button to iPhone, iPad and Mac (Catalyst) App

When Google released Material Design Guidelines they introduced many new design elements and one of them was Fab Button i.e. Floating Action Button

Normally we see the Fab button in Android Mobile Apps but a lot of Apple iPhone, iPad and Mac App Developers has started using the Fab button in their design.

Here we will see how to add the Fab button programmatically in your iOS, iPadOS and macOS app on any view including UICollectionView or UITableView.

Step 01: First declare the UIButton variable in your View Controller

var fabButton = UIButton()

Step 02: Add this code to viewDidLoad()

(more…)

Continue Reading Post

User Privacy & Data Protection Standards in new Apple iPhone, iPad and Mac Operating Systems

I was planning for long time but never implemented Google Analytics for my Apple iOS Apps to get real data about my app usage. I thought it was more of work to implement analytics in app with framework using cocoa-pods which will in a way will slowdown my app performance.

But with the news of Apple is vary serious about and already is about privacy and data collection with online ads for Safari Browser on Mac and system wide privacy settings on Apple iOS 14 for iPhone. I am happy that I never implemented third party analytics framework or never added ad network to get revenue out of my apps. My apps are already paid and I don’t want to mess-up user experience with impromptu in-app advertisements.

(more…)

Continue Reading Post