loading...

Exploring IOS

ayelishaamoah profile image ayelishaamoah ・3 min read

Why app development?

During Makers we have been learning full stack web development and haven't really touched on mobile development but there are few reasons why mobile development is an area of software engineering that has peaked my interest:

It presents a new challenge

Software development poses interesting challenges, but mobile development poses additional challenges such as less memory (I think the app download limit is 512mb), inconsistent internet connections but also unique UX challenges e.g can a user reach your main app feature when using one hand.

The potential reach of your product

With the rising availability of affordable smart phones, over 5 billion people around the world now have a mobile phone.


We are social: Digital report 2018

Getting started

First of all you'll need to download XCode from the App store - it is just over 6G so you might want to make a cup of tea while you wait - it felt like it took ages.

Xcode is an IDE developed by Apple for macOS development which allows you to build software for Apple hardware including macOS, iOS, watch OS and tvOS.

I recommend following this tutorial to get familiar with XCode and learn some Swift basics. Below are some of the key takeaways that stood out to me.

Auto Layout: Inbuilt layout functionality within XCode that allows you to set constraints relative to other elements in the view on the x and y axis.

If you end up having to define multiple constraints, an alternative option is to use a stack view (vertical or horizontal) which acts as a container for elements to be positioned within. Stack views can be nested within other stack views.

If you move an element after setting a constraint, XCode will flag that the current view is not accurate - clicking 'Update Frames' repositions all elements according to the constraints you have defined.

Safe area: The area that is guaranteed not to be obscured by anything on the device.

Points vs Pixels: Due to the differences in pixel density on different devices, XCode layouts are defined in points rather than pixels e.g a button is positioned 10 points below the logo.

Conflicting constraints: If you set constraints on elements that conflict with one another, XCode will decide which constraint to break which can have unintended effects on the layout - XCode provides useful warnings when this will happen and allows you to rectify this.

Different devices: You can view how you app will look on different devices by clicking 'view as:...' and gives you the option to change the orientation.

Apple organises its devices into different size classes based on differing width and height ratios.

You can change constraints to apply to different size classes e.g smaller devices in a specific orientation.

Playgrounds: lightweight file to play around with code without needing to create a complete XCode project - useful to get started with Swift.

UI kit: Library provided by Apple to help build apps. Provides (elements) objects that can be used to build the UI.

Swift

First impressions of Swift are positive - it is different to other languages that I am used to, being that it is statically typed.

Key points that stood out:

let keyword: used to define a constant

Data types: variables can only accept the data types they are initially assigned - the data types is inferred and cannot be changed.

Doubles: similar to floats but can store more decimals

String interpolation:

func sayHelloTo(_ name:String, _ age:Int) {
    print("Hello \(name), You are \(age) years old")
}

sayHelloTo("Jane", 26)

Named arguments: The underscore before the parameter allows you to omit the label when calling the function.

Void: means that no value is being returned from the function

Classes: When you create a new class, a custom data type is created.

This post was more for my own note-taking but hopefully it was useful in some way. I'm currently following another tutorial series that looks at building a clone of Instagram - I'm excited to see how the app communicates with a back end (firebase in this instance) here is the link for anyone that is interested in getting started with iOS.

Please do feel free to share your thoughts on iOS development 😁

Posted on by:

ayelishaamoah profile

ayelishaamoah

@ayelishaamoah

Makers Academy April 19 Cohort. Sharing reflections throughout my journey into software engineering.

Discussion

pic
Editor guide