Skip to main content

Swift Delhi Meetup - Chapter 16

"It is good to rub, and polish our brain against that of others" 
- Michel Eyquem de Montaigne

Absolutely yes when I end up in Swift-Delhi Meetup (Chapter 16) last weekend. A big thanks to OYO Rooms for the sponsorship & their organising team. There was total 5 exciting talks lined up on that day. In this post let me brief each one of them & hope you can find it useful.

Developing Apps for Global Audience (Lightning Talk)

- Shrey Bansal, OYO Rooms
When the app is targeted global market, it is very much necessary to keep in mind its design & development challenges. He gave many instances like - Localisation of text might effect label frames if it has fixed size. A font family may not support for all the languages for example - Chinese text don't have bold effect 😑. Even colours, symbols, could give different meaning over different countries. When he shown "Stock app" in iPhone - Green & Red colors are switched in Indian and Chinese app versions. This is because Red color represent positiveness in China but in India it is opposite. In addition, he also stressed on Dates + Timezone & LTR-RTL supporting on app has got major roles in global market.


Unit testing with VIPER 

- Alok Kumar Singh & Jyoti Jangir, OYO Rooms
VIPER is a pattern that implements separation of concern paradigm. It divides an app’s logical structure into distinct layers of responsibility. Jyoti gave brief on the VIPER architecture and implementation example. Whereas Alok explained benefits of Unit Testing,  deciding what to test & how to test Presenter/Interactor layer using mocks. He also gave demo on simple Unit test case in XCode.

A/B Testing - Controlled experiment with Firebase

-Vaibhav Parmar, Nickelfox
A/B testing is the process of running a controlled experiment comparing one or more variations of an iOS app against the original, with the goal of improving a specific metric, such as taps, engagement, or in-app purchases. Vaibhav given live demo on an app that switches layout list (say version A) to grid (say version B) with help of Firebase remote config.  He is also given stats on users activity from the firebase post experiment.


Generics in Swift 

- Avay Kumar Das & Rahul Narang, OYO Rooms
Another presentation recalled me generic function/class/structures. As we know, a generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define. He shown a simple use case of Generics that solved code duplication and achieved strict type checking.

Customising Notifications in iOS 12 (Lightning Talk)

- Bhagat Singh, Zomato
In this lighting talk, I was able to understand custom notification with the help of Notification Content Extension. Notifications have been overhauled by Apple in iOS 12 and there are many new features and functionalities that developers can integrate in their apps to gather a seamless experience for the user.  Many of these features are undiscovered by developers like me. Provisional notification is one of the them !.

meetup.com/swift-delhi

Popular posts from this blog

Animating label text update - choosing a better way

Recently I published a countdown app .  At one point of development - I have to show a timer on a UILabel which ticks on each seconds. As usual I started  setting text to a label object - self .timerLabel.text = someString Easy piece of cake right !?   But wait ... it won't take much user attention when timer ticks on every seconds. So I decided to make use of a simple animation while label gets text update. I found there are dozens of ways to animate a label. In this short article, I listed 3 best way you can animate text on a label. ( Spoiler Alert 👀- I decided to go with 3rd option)  1. Fade In - Fade out animation : CATransition class has got transition type `fade`. With timing function of CATransition - I was able to see the below result. let animation: CATransition = CATransition () animation.timingFunction = CAMediaTimingFunction (name: CAMediaTimingFunctionName .easeInEaseOut) animation.type = CATransitionType .fade animation.subtype = C...

Prevent Navigationbar or Tabbar overlapping Subview - solved for Card view

Recently, I started with a Card view added as a subview of UIView in a view-controller. When a view controller created along subviews, it tends to use entire screen bounds and also slips behind Tab bar or Navigation bar. In my current situation, it's second case. Casually new iOS developers will write a patch by additional value for coordinate y and subtracting bar height from its size. A lot of them posted in SO threads too : How to prevent UINavigationBar from covering top of view? View got hidden below UINavigationBar iOS 7 Navigation Bar covers some part of view at Top So, how I got solved ? self.edgesForExtendedLayout = [] This  will avoid all subviews in a view controller get behind any bars. Read full apple  documentation on here. Full Source code below :  //Simple view controller where its view layed-out as a card. class WidgetCardViewController : UIViewController { var containerView = UIView () //MARK:- View Controller Life Cyc...

Printing Staircase Pattern : Swift coding challenge

In this post, we can try interesting pattern printing challenge in Swift. The problem statement goes like this " Print a staircase of given size 'n'. Make sure that its base and height are both equal to n, and the image is drawn only using `#` symbols and spaces. The last line is not preceded by any spaces." Expected Output : # ## ### #### ##### ###### Working solution: func makePatternOf ( _ size : Int ) { var str = "" // 1 for index in ( 0 ..< size ) { let stop = size -index-1; // 2 for _ in 0 ..< stop { str. append ( " " ) ; } // 3 for _ in 0 .. . index { str. append ( "#" ) ; } print ( str ) str = "" } } makePatternOf ( 6 ) Loop to visit every row of stair case. Loop for appe...

Implementing autocompletion OTP field in iOS

Long waiting is over. !!  iOS 12 brings Autofill for OTP text field which is close to Android provided a decade back. Previously in iOS we used to toggle between OTP text screen and message inbox.  Which was hard to remember and time consuming resulting a bad user experience. Personally, I have been asked from the client/customer couple of times to implement autocompletion for OTP field and took me a lot of time to convey that it is not possible in iOS. Why Autofill was not possible previously?  We all know that Apple gives at most care for user privacy. When we see iOS architecture, each individual app is like a separate island. There is no inter-app bridge between apps (exception for Keychain and URLSchemes APIs which gives very limited scope). Thus we cannot read message content from inbox. Where to start Autofilling? First of all, the target SMS need to have the OTP Code with prefix string "Code" or "Passcode"on its message content. Beware of OTP c...

UICollectionViewCell shows with wrong size on First time - Solved

We commonly use Collection view where its cell size calculated run time. The flow layout delegate is responsible to return individual cell sizes. BUT in most of the cases, delegate method `collectionView: layout sizeForItem:` expects cell size too early. Before generating actual cell size. extension YourViewController : UICollectionViewDelegateFlowLayout { func collectionView ( _ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize (width: externalWidth, height: externalHeight) } } For instance, if a cell size depends on external view and its frame is not yet ready - results with wrong (or outdated) cell size. Typically happens for the first time view controller laid out all views. You can find similar queries in StackOverflow community : Collection view sizeForItemNotWorking UICollectionViewCell content wrong size on first load How to refresh UICollec...