Tag Archives: swift

upper app UI design case study

Case Study: Upper App. Coding UI Animation.

No doubt, animation of interfaces still belongs to the most debatable issues between designers and developers. Animated UI elements often set the challenge to developers, so to enhance usability of an app or a website, the motion should be grounded on user research and add its two cents to the positive user experience. Developers in Tubik are open to this sort challenges: earlier we have already shown the case on coding motion for Toonie Alarm, this time we are continuing the theme with a practical case of developing animated interactions for Upper App.

 

Back to Basics: Core Animation and UIViewPropertyAnimator

 

Supporting designers and developers in creating attractive and functional interfaces for iOS apps, in 2006 Apple presented Core Animation, a system for animating views and UI elements of the app. Basically, it is a graphics compositing framework used by MacOS, iOS, watchOS, and tvOS to produce user interfaces with motion. It is not a replacement for the app views: instead, it is a technology that integrates with views to provide support for animating their content. However, the animation is not the only part of this framework: Core Animation presents the infrastructure for compositing and manipulating visual content. The framework uses GPU to accelerate rendering screen objects. Core Animation divides the visual content into individual objects that are called layers and arranges them in a tree hierarchy known as the layer tree.

 

The fundamental class that represents these layout objects is the CALayer class. It looks similar to UIViews implementation. The CALayer class manages image-based content and allows performing animations on that content. The main task of the layer is to manage the visual content but it also has visual attributes that can be set such as a background color, border, and shadow. In addition to managing visual content, the layer maintains information about the geometry of its content (such as position, size, and transform) used to present it on the screen. Modifying the properties of the layer is the way to initiate animations on the layer content or geometry. The app runs an animation. Layout, Display, Prepare and Commit phases are performed once before the animation starts. At this time the model layer is updated. The animation itself is rendered in a separate process on the render server using the presentation layer.

 

iOS animation

 

Nevertheless, whenever developers would like to interact with the animation (for example, pause or restart), it most likely leads to a huge piece of work. iOS open source community offers 3rd party (HTML, CSS, JavaScript) frameworks that can take care of this problem, like Pop, Interpolate and other.

 

iOS 10 provides a new way to animate that is UIViewPropertyAnimator. UIViewPropertyAnimator was presented in 2016 and it provides more extensive functionality on operations with animated interfaces. Vital to mention, it can be accessed only via iOS 10+ and tvOS 10+. The class allows developers to animate changes to views and dynamically modify the animations before they finish. This means programmers can stop (pause) in-progress animation, restart it at a later date if they wish and even dynamically modify the animated properties, for example, change the animation end-point to the top-right of the screen when it was previously the bottom-left. Developers can simply call the startAnimation() function on this instance to start the animation or animations. Anything that can be animated by the previous UIView API is eligible to be used in a UIViewPropertyAnimator instance. Here are its options:

 

  • Frame
  • Bounds
  • Center
  • Alpha
  • Background color
  • Transform (as long as it is a transformation in the 2D space, for 3D only with CoreAnimation)

 

UIViewPropertyAnimator gives programmatic control over the timing and execution of the animations. Let’s sum up what are the core differences of UIViewPropertyAnimator from CAAnimation:
 

1. After the creation of the UIViewPropertyAnimator object, the object of CAAnimation isn’t created for the layer;

2. After starting UIViewPropertyAnimator (by calling method startAnimation()) CAAnimation is created and added to the layer for animated UIView

3. Animation exists until it’s completed or deleted

 

The big advantage of  UIViewPropertyAnimator is that it’s new and has been created on the basis of modern requirements and needs, taking into account the specific features of Swift.

 

runningPropertyAnimator

 

The comment in the API informs that Apple Company pushes this class as the default for creating animations on UIView. At the moment, it is recommended for creating animations in UIKit and it’s going to replace the methods UIView.animate(withDuration:)

 

Practical cases

 

Here is a simple example of using UIViewPropertyAnimator in practical case:

 

ball UI animation

 

 

 

For comparison, here’s an example of code for the same animation, but accomplished with CoreAnimation framework:  

 

 

Now let’s look closer how animation was created with UIViewPropertyAnimator for Upper App application, a simple and elegant to-do list for iPhones: here we present the case of interactions with the menu.

 

Sample 1

 

upper app ui animation development

 

 

Sample 2

 upper app ui animation development  

 

 

UIViewPropertyAnimaton is really helpful in the process of iOS development: it simplifies the way for creating quite complex animations saving time and effort. Keep and eye on new posts: they will present fresh practical cases.


Welcome to download Upper App via App Store

Welcome to read more articles on iOS and web development

ios development interview

From QA to iOS Development: Life Story of the Career Switch.

Switching the career path and changing long-term ambitions is never an easy choice. Still, in many cases this step is feasible, living up the new hopes and professional growth. In the sphere of web/app design and development this sort of situation is, perhaps, even more common than in the others due to dynamic and rocketing progress of information and communication technology in the world. New professions and positions pop up like mushrooms after the rain, opening totally new perspectives and allowing professionals to set new ambitions.

 

Our today’s story is of this kind: Tubik iOS developer Maxim Pedko will share his experience of the career switch from QA engineering and project management to iOS development. Check out the interview and get inspired!

 

iOS developer tubik studio

 

How did you make the decision on your career choice?

 

Actually, I had quite extensive and various experience: before the first step in development, I worked as a QA engineer and project manager. Still, my big dream getting stronger and stronger was to create real products by myself. One day, working over current tasks, I realized that I have to change my life and try something new that will get me closer to my ambition. I had studied the basics of PHP, web development, CMS and it even let me earn something for a living, but didn’t give me real pleasure from my work. I developed simple plugins for CMS WordPress, but I didn’t feel it like the full-scale development as the plugins were focused mainly on correction of existing design according to client’s requirement, not more. That job wasn’t bad, it was just not the one for me as I didn’t get either aesthetic or professional inspiration.

 

Why did you choose Apple as the field for your career growth?

 

I deeply and sincerely fell for iPhones and other products by Apple after their first presentation. That distant day when Steve Jobs presented a new revolutionary buttonless mobile phone with beautiful photorealistic interface, called iPhone, they won me over with their design and usability. Since then, I have been a keen fan of Apple, although unfortunately I didn’t have a chance to get their devices for myself. Certainly, a lot of things have changed since the presentations of the first iPhone, iOS, iPad, yet I am still the supporter of this company products and philosophy.

 

Swift vs Objective-C. Why did you choose Swift?

 

Before I started programming for iOS devices, I had analyzed the well-known and established Objective-C and newer Swift. For me, the issues to consider were the following:

  • Swift is easier readable than Objective-C
  • Swift is easier maintained and supported
  • Swift requires less amount of code
  • Interactive coding is available at Swift Sandbox
  • Swift is the platform for the future, as Apple have outlined their intent of the full switch to this programming language.

 

ios development interview

 

Where does the way of iOS developer start?

 

To start developing iOS applications, first of all you need high motivation and wish to grow professionally. Without the great desire to self-develop and study the field in detail, it’s better not to start, moving yourself to the further search of the domain you are interested in. Starting the career in iOS development, you should be ready to some aspects that won’t let you do it from the very first day. For instance, you won’t be able to code iOS apps without a computer from Apple! You will need Xcode which works only on MacOS.

 

I have tried the software that is argued to enable developers to code for iOS on other operational systems: it took me ages to install it via virtual machines and tune the soft into more or less working condition, still it didn’t work efficiently and heavily overloaded the computer. There were even the moments when I got so frustrated that wanted to throw away my computer through the window and forget it as a nightmare. So, I had to accept the rules of the game that there’s no other way than coding for iOS on MacOS.

 

Another essential thing to mention is that to develop iOS apps you really need only Apple computer still it’s not required to buy all the existing devices like iPhones, iPads, Apple Watches etc. Xcode has simulators of all the devices with which the application will be potentially used so having developed the application for one of them, you can instantly test it on the simulator of the device.

 

ios development glossary

 

Anyway, if you have bought an Apple computer, set up Xcode and are ready to code iOS apps, you will need the reliable source of information, knowledge and practice in studying Swift. There are numerous materials on this topic shared via YouTube, such as video lessons and vlogs; also you will definitely find the text-based sources like blogs and forums for developers, but the most reliable, actual and truthful source of data for you is the official website for Apple developers.  Another useful resource is Swift website  presenting lots of tutorials and practice for studying Swift coding and I would also recommend the interactive course Developing iOS 9 Apps with Swift. No doubt, to keep up-to-date, iOS developer should never miss conferences and presentations  from Apple.

 

What are the other domains of knowledge needed in this sphere?

 

I have to admit that basic knowledge plays the vital role for professional growth in this field. Before you start to learn programming not being a native English speaker, you have to understand that without knowing English solidly you’ll get the experience when the best and the most reliable sources on not only iOS, but also programming in general are shut for you. That’s the reason to constantly improve and practice the language even if you think you know it well.

 

If you don’t own Apple computer working on MacOs, it’s not the reason to get in despair. You have to plan your steps and study everything that you will potentially need in the future. Before starting iOS development, I had studied operations in client-server applications, REST API, basics of OOP, databases, base operators, types of data, — everything that can be studied before starting real practice in coding on Swift.

 

Could you share your real experience that allows considering the possible risks?

 

As I’ve mentioned, to get real experience you will obviously need an Apple computer. If you don’t have it, try asking your friends or finding hubs where you’ll be able to try actual programming on Mac. It’s vital to understand if you really want to continue your professional way in the sphere as, you see, the start needs some basic capital, at least in the form of quite expensive hardware.

 

When you start getting real experience in development, don’t be afraid to start coding for real simple projects and get precious practice of both development and communication with customers. That’s important to make your name in this highly competitive sphere and open new perspectives for complex and interesting projects in the future.

 

If by any reason you are afraid of freelance platforms or frightened to be cheated, working over your own projects you should carefully plan the tasks and set the deadlines. There are many good sources where you can buy lessons or get them free, and there you are provided with the practical tasks which you are obliged to complete. You have to be persistent, try and study, be always open to new knowledge in development, — this is the only productive way to the day when you start creating efficiently working code.

 

As for me, to get the knowledge and practice of iOS development without having my own Apple computer, I did my best to get enrolled to Tubik Studio as an intern. To get more practice and have more hours of effective studying, I took the risky step having left my previous workplace and devoting the maximum of time to progress in what I saw my future. After two month the risk paid off: I got an offer of the full-time developer’s position in iOS department. Moreover, I’ve got the precious experience of working in team of professionals that opens the door to more complex, sophisticated and significant projects, shut for freelancers working solo.

 

tubik studio developers testing

 

And my message to those who start this way is the following: it’s not enough to buy the original computer, it’s not enough to narrowly focus on one aspect of the job without studying the others. It’s vital to realize that whatever is the sphere of development you see yourself in, you should get filled with new knowledge on a daily basis, and only persistence, hard work and self-education will bring you to being a productive and highly-skilled developer.


Welcome to read more articles on iOS and web development

web-ios-development-trends 2016

Review of Popular Trends and Tools for Developers in 2016

The software technology is constantly evolving, and internet users as well as people creating digital products expect innovations and progress in this field. To provide high-quality development services for clients and final users being competitive on the market, it’s highly advisable for designers and programmers to keep an eye on mainstreams in the professional sphere and try the latest and greatest advances. Although it doesn’t always mean that new tools and trends will immediately replace the current, still the strategy of setting up the sails for every wind usually provides higher level of professional flexibility and growth.

 

The year 2016, which is quickly leaving day by day, has brought a lot of news as well as established some already known tools, trends and techniques even more solidly via practice and updates. Web and app developers have got new frameworks, updating technology and powerful development tools. We have discussed what Tubik Studio developers find popular and important to mention in the domain in 2016 and today want to share the ideas with our readers. So, here is the list of broadly used programming languages, frameworks and tools as well as updates which quickly won their place in the process. As usual, this year development trends and popular choices are driven by greater efficiency, increased customization and ease of use. Let’s check what has been found essential in iOS and web development.

 

iOS development

 

The constantly changing world of mobile phones, tablets and other devices means that businesses keep app developers busy all the time requiring high professional level and flexibility. Every latest version and update of iOS operating system brings new facilities, opportunities and challenges for developers. The following stuff was widely used in creating great variety of iOS apps this year.

 

ios development glossary

 

Alamofire

 

Alamofire is a Swift-based HTTP library for iOS and Mac OS X. It uses NSURLSession and the Foundation URL loading system to provide first-class networking capabilities in a convenient Swift interface that simplifies a number of common tasks for the developers. Alamofire offers chainable response and request methods, JSON parameter and response serialization, authentication, network reachability, Unit and Integration test coverage and many other features. It was initially written in Swift and did not inherit anything from Objective-C.

 

ReSwift

 

ReSwift is Redux implementation of the unidirectional data flow architecture in Swift. The ReSwift library allows everybody to dive into the code, understand every line and contribute. It also supports Swift 2.2 through to Swift 3. ReSwift is quickly growing beyond the core library, providing experimental extensions for routing and time traveling through past app states. It provides separating app components into three important concerns: State, Views and State Changes.

 

Firebase

 

Firebase is a BaaS (Backend-as-a-Service) that started as YC11 startup and grew up into a next generation app development platform on Google Cloud Platform. It supports the web, iOS, OS X, and Android platforms. Traditionally configuration of a server requires fetching data via some API that is written in order to retrieve data from the server. Firebase simplifies storing and retrieving the data via a third party service and comes with its own API. The platform was acquired by Google in October 2014 and received a significant number of new features in May 2016. In the new version, Firebase takes many of Google’s existing developer tools, like Google Cloud Messaging and combines them with new and current Firebase services, among which app indexing, crash reporting, hosting, cloud messaging, AdWords, AdMob, storage, real-time database and others.

 

Swift

 

Before Swift came into play, Objective-C had been the main programming language used by developers for OS X and iOS operating systems and their APIs. Swift, introduced at Apple’s 2014 WWDC, brought its own dose of revolution. In general description, Swift is a general-purpose, multi-paradigm, compiled programming language broadening the previous scope of operating systems as it was developed for iOS, OS X, watchOS, tvOS, and Linux. The latest version Swift 3 got improvements which made code-writing more natural and consistent. By downloading Xcode 8 developers can easily use this new version and move automatically from previous to latest Swift 3 syntax.

 

Tubik Studio iOS development

 

Front-end development

 

Front-end developers also mention dynamic progress in the domain of tools and software, mostly based on the updates of already established platforms and programming languages. JavaScript holds its leading positions because the language is usually used to make web pages more interactive, create games, animations, dropdown menus and take extensive control over the web interface. A large number of web development frameworks have come into JavaScript recently and many of them have already established huge communities such as Angular, Meteor, React and Backbone. Let’s look through the most popular JS frameworks and libraries essential to remember as effective and broadly used in 2016.

 

web developer tubik studio

 

Angular.js

 

Angular.js is a complete, JavaScript-based, open-source, front-end web app framework maintained by Google. It is a common technology to provide a solid base foundation for developers working with the latest industry standards and requirements. The framework provides a set of modern features for rapid app development. New version of Angular.js is called “AngularJS 2” and has been provided with the improved structure and development features. Now it enables to get improved and simple form of validation, two-way data binding, routing and animations. The second version is totally different from previous one, requiring ES6 and TypeScript knowledge.

 

Backbone.js

 

Backbone.js is a framework with a RESTful JSON interface and based on the model–view–presenter (MVP) architectural pattern. The main concept of the framework is that all server-side functions should flow through an API, minimizing the amount of code that needs to be composed for achieving the same powerful functionality of more sophisticated web frameworks. Backbone is a popular web development framework for JavaScript developers because its usability modules are easy to understand, and also it presents a straightforward learning curve. For example, Trello is built using Backbone.js for all the models, views, and routes. Backbone.js 1.3.3 was released in April 5, 2016. The bugs of 1.3.0 — 1.3.2 versions were fixed in the 1.3.3 and it also provided new methods and improvements.

 

MeteorJS

 

MeteorJS is a free and open-source JavaScript web framework written using Node.js. It simplifies the development of real-time mobile and web app that can be built with a singular development interface. Any web app built with Meteor is also automatically compatible with mobile devices. The developers can convert the existing web apps into mobile apps and release them in the most popular mobile app stores. Meteor is also full-stack framework supporting native JavaScript language for building modern and scalable web and mobile apps. The public package repository Atmosphere has thousands of published packages that let to create multiplex apps. The latest versions of MeteorJS are 1.4.2.3 — 1.4.3-beta.1. The main feature is enhanced rebuild performance focusing on the complex apps development. The framework has become more modular with parts that can be packaged, maintained and evolved independently.

 

React.js

 

React.js is an open-source JavaScript library for data rendered as HTML. It is maintained by Facebook and the main area of expertise is supporting implementation of a Virtual DOM. The Virtual DOM is compared with the current state of the DOM generating a list of operations that make the current DOM look like the new one. Those operations are applied quickly in a batch. React.js v15.4.0. was released in November 16, 2016. In the new version, React DOM implementation was moved to the React DOM package.The upgrade solves a few problems such as errors of React DOM import in the same file as the snapshot testing renderer. The version can visualize React components in the Chrome Timeline allowing to see which components are mounted, updated and unmounted.

 

CSS frameworks

 

CSS processors emerged in web development many years ago having quite limited set of features in their early version. Yet, nowadays they are the key points for CSS development. The processors extend CSS with variables, operators, interpolations, functions, mixins and many other usable assets. At the moment, Less and SASS are mentioned among the most popular preprocessors with the large feature sets. However, the news that Bootstrap 4 is migrating over to SASS gives it a slight edge over Less in 2016.

 

programming languages fron-end

 

Bootstrap

 

Bootstrap has become even more popular over the last years. Like any effective front-end framework, Bootstrap includes CSS, HTML and JavaScript components. It adheres to responsive web design standards allowing to develop flexible websites of all complexities and sizes. The framework typically includes the latest and best features because it is continually updated. For example, Bootstrap added themes that met Google material design guidelines shortly after they were published and it was also upgraded to use SASS as a CSS preprocessor.

 

Foundation

 

Foundation is a highly advanced front-end framework useful for designing responsive and flexible websites. The framework supports GPU acceleration for smooth animations and has Fastclick.js for fast rendering on mobile devices. It runs on the SASS preprocessor and includes the Foundation-developed data interchange attribute, which allows loading lightweight HTML sections for mobile and bigger HTML sections for larger screens. Foundation is used by Facebook, eBay and Mozilla, but it is quite complex and may not be suitable for beginners. The version 6.3.0-rc3 was released in December 9, 2016. It has a number of the improvements such as the updates of components and fixed errors of previous version.

 

Back-end development

 

Nowadays lots of programming languages and their frameworks, such as PHP, Java, Ruby and the like, are used for efficient back-end development. Let’s check out the list of popular languages and frameworks often chosen for web projects.

 

web development and programming

 

PHP

 

PHP is an HTML-embedded programming language. The main aim of the language is to allow creating dynamically generated pages quickly. Its frameworks are used for back-end development and widely used for the complex web services. One of the main PHP development concepts is to reuse generic components and modules for faster creation and better performance of the projects. The frameworks allow keeping the codes organized, facilitating scalability and ensuring long-term maintenance.

 

Laravel

 

Laravel is an open-source web framework intended for the development of web apps following the model–view–controller (MVC) architectural pattern. The framework has a lot of fresh features and lightweight templating engine that helps developers complete the most frequent tasks like authentication, sessions, queuing and caching. Laravel has a micro-framework Lumen focusing on lean management. It helps to develop sub-projects and micro-projects and allows programmers to put them into the main framework by just copying the code into the particular project. Laravel 5.3 was released in August 23, 2016. The new features are focused on speeding up developer’s performance by adding the set of extra improvements for common tasks, for instance Laravel Scout (a driver based full-text search engine for Eloquent), Laravel Passport (the technology deploying OAuth2 server), Laravel Mailable, Laravel Notifications, Laravel Echo (an improvement to the existing event broadcasting system), a new $loop variable of Laravel Blade and a huge overhaul of documentations.

 

Yii

 

Yii is an open source, object-oriented, component-based, MVC framework, easy to use for developing web apps and APIs. It has a reliable code generator allowing to save time writing code to connect to the database and also it uses the ActiveRecord pattern for object-relational mapping which means less SQL code to write. The main benefit of the framework is the ability to decrease the complexity of developer’s work. Products created with the Yii framework are characterized as efficient, extensible and easy to maintain. The latest version of Yii was released on October 20, 2016 presenting a complete rewrite of Yii on top of PHP 5.4.0.

 

Symfony

 

Symfony is an open-source web framework built on top of components such as Drupal, Ez Publish, and phpBB. These components are reusable PHP libraries used to complete tasks like creation, routing, object configuration, authentication, templating, etc. Symfony APIs also enable easy integration with third-party apps and Symfony can be used with popular front-end frameworks such as AngularJS. The latest version of Symfony was released in December 13, 2016 with enhanced performance and fixed bugs for providing the reliable workflow.

 

Node.js

 

Node.js is an open-source, cross-platform, JavaScript runtime environment that allows developers to run JavaScript code on the server, outside a browser. It is built on top of Google Chrome’s V8 VM engine supporting JavaScript in the chrome browser. Node.js wins high popularity because it enables to build large scale, real-time and scalable mobile and web apps with only JavaScript. As the Node.js ecosystem grew, the frameworks also started to showing progress and speeding up the development workflow. There are many Node.js frameworks that simplify building real-time web apps, among them the following:

 

Node.js Express — a minimalist and flexible framework built on top of node.js and has taken node.js to the next level by providing high-level wrappers around node.js APIs. The framework offers all the features required for developing high-quality web apps, mobile apps and APIs. Express also qualifies as Node.js rest API framework.

 

KOA — a lightweight framework for developing web apps and APIs. KOA requests flow through middleware in a stack-like manner allowing developers to perform actions downstream then filter and manipulate the response upstream. KOA generators also greatly increase readability and robustness of the app.

 

Sails.js. — a web framework that sets platform for easy building custom, enterprise-grade Node.js apps. The framework is designed to resemble the MVC architecture from frameworks like Ruby on Rails but it has more modern, data-oriented style of web app development. Sails.js has all the features required for building anything from a small scale chat client to an enterprise grade web app.

 

Ruby

 

Ruby is dynamic, object-oriented, open source programming language with a focus on simplicity and productivity. Moreover, Ruby has framework which supports high level of flexibility for developer in the process of creating code for particular aims. Ruby on Rails is a development tool to give web developers libraries providing structure for all the code they write. Actually, it is a server-side web app framework that extends Ruby programming language. This framework uses Ruby to dynamically assemble HTML, CSS, and JavaScript files. Rails helps developers to build websites and web apps abstracting and simplifying common repetitive tasks. Rails 5.0 was released on June 30, 2016, introducing Action Cable, API mode, and Turbolinks 5.

 

ruby-on-rails web development

 

Java EE

 

Java EE is a platform for creating large-scale apps and software in the Java programming language. It includes a runtime development environment as well as an API and has additional features in comparison with the standard edition, including web services, distributed architectures, multi-tier architectures and object-relational mapping.

 

.NET Framework

 

.NET Framework is a technology that supports building and running the next generation apps and web services. The framework consists of the common language runtime and the .NET Framework class library. The common language runtime is the foundation of the .NET Framework. The technology provides language interoperability across several programming languages (each language can use code written in other languages).

 

copywriting for digital products

 

Even this review, briefly describing popular tools and software, shows that the sphere is constantly growing and offering new opportunities for both developers and users. Whatever broad and diverse the list of tools will be, in practice developers choose what is better for them only by taking their own steps and breathing life in digital products via code. The best tool, software and technique is the one that enables to provide the final product which is effective, user-friendly and solid in performance. That’s the biggest intention we had compiling this list: providing developers with food for thought on trying something new and reviewing which important things the year has brought. No doubt, the next year will be even more powerful in innovation for app and web development sphere so let’s look forward to them together!


Welcome to read more articles on web development

ios development glossary

IOS Glossary: Architecture, Patterns, Xcode.

As soon as you know the basics, you set the foundation for growth. It works the same way for any job and there is no any secret that many significant innovations are still grounded on diverse knowledge boosting potential and force of creativity. So, today let’s do our homework on the basics and add one more article to the set of professional glossary. Earlier we have already published the Glossary posts with key terms for the topics of UI/UX design and web design as well as business terms and abbreviations. This time the perspective will get changed a bit, featuring first set of terms in the theme of iOS development. Let’s get started briefly reviewing the basic notions common for the sphere of iOS development.

 

iOS

 

Basically, widely known iOS is the well-established abbreviation taking its roots from the phrase «iPhone Operating System» which was created originally for the system of mobile devices produced by Apple such as iPhone, iPad and iPodTouch and now also AppleTV. 

 

User interfaces created for iOS are made on the basis of direct manipulation involving multi-touch gestures. Interface control elements present variety of functions and forms including buttons, sliders, and switches. Gestures taking place in the process of interaction with such type of interface are also various, for instance, swipe, tap, pinch, and reverse pinch; what is more, they all have specific definitions in the context of the iOS operating system. Some iOS applications even use internal accelerometers which can react to the cases of shaking or rotating the device in three dimensions. Another typical feature is portrait and landscape mode switching.

 

From the standpoint of development, Apple gives steady preference to simple and durable things, and this concept is applied to their products, applications, tools and frameworks. It is expected that when iOS developer builds an app for iPhone, it will run on any other device with the iOS. This aspect of iOS development can save large amount of time for programmers as writing code, let’s say, for iPhone, developer uses the same programming language for all Apple’s computing devices. Said otherwise, application created for iPhone can later be even integrated into Mac.

 

In both UI/UX design and development for iOS, specialists making screens and writing code, apply their flight of creativity in terms of definite rules and guidelines to keep. The apps which don’t keep those guidelines risk failing to submit their app to Apple ecosystem of devices. Working over the digital products intended to be used in iOS, professionals need to know iOS Human Interface Guidelines and always keep and eye on updates and fresh recommendations. The set of guidelines for designers states: «As an app designer, you have the opportunity to deliver an extraordinary product that rises to the top of the App Store charts. To do so, you’ll need to meet high expectations for quality and functionality». Actually, the same position works the same way for developers who are offered samples, guidelines and support to find the optimal solutions for user-friendly and effective digital products.

 

ios-developers-tubik-studio

 

iOS architecture

 

As it was mentioned before, iOS allows users to interact with their devices and products using gestures such as swiping, tapping and pinching. These finger actions are typically performed on touch screen displays, which provide fast response and accept inputs from multiple fingers.

 

The iOS architecture can be pictured as four abstraction layers that define it:

 

Cocoa Touch. The layer containing variety of frameworks which define the appearance of the app. It also provides the basic app infrastructure and support for main technologies such as multitasking, touch-based input, push notifications, and many high-level system services.

 
Media. The layer with graphics, audio, and video technologies which developers use to implement multimedia experiences in the apps. The technologies in this layer make enable building apps that look and sound excellent.

 

Core Services. The layer that consists of essential system services for apps. Main services are the Core Foundation and Foundation frameworks, which define the basic types that all apps use. It also contains individual technologies to support features such as location, iCloud, social media, networking, etc.

 

Core OS. The layer including services such as the security, local authentication and core Bluetooth frameworks.

 

Apple recommends developers to write code to the highest applicable layer whenever possible, and only use the lower-level frameworks for features not exposed at higher levels.

 

Architecture design patterns

 

In software development, architecture design pattern is the matter of structure. It is not a finished architecture that can be transformed directly into code. Patterns are similar to the case of reliable practices that the developer can use to solve common problems building an application or system.

 

In general terms, architecture pattern in case of development could be described as reusable solution that could be repetitively applied for the issues that frequently rise within a particular context of development and engineering interactions. This sort of patterns take into account various limitations and restrictions including the problems of hardware performance, availability, environment of use and even particular business goals.

 

Among main architecture design patterns we could mention:

  • MVC (Model–view–controller)
  • MVP (Model–view–presenter)
  • MVVM (Model–view–view-model)
  • VIPER (View-interactor-presenter-entity-routing)

 

First three types of architecture design patterns assume putting the entities of the app into one of 3 categories:

 
Models – give the controller/ presenter/ view-model the data to populate view.
 
Views – display content and are populated by the controller/ presenter/ view-model. Each screen of the app is a ‘view’ which includes buttons, text, menus, fields and etc.
 
Controllers/ Presenters/ View-models – control behavior of the app. Apps are based on event-driven programming, controllers/ presenters/ view-models receive, process and return events.

 

Tubik Studio iOS development

 

To see how it works in practice, let’s take MVC pattern and describe it a bit more in detail. The model-view-controller (MVC) is an architecture design pattern that breaks code down into three parts: user interfaces (views), data (model), and the software that communicates between the two (controller). The building blocks of apps are objects — arrays of code organized with MVC pattern. Each screen of the app is a view: the data model controls the content it displays, and the controller manages communication between the view and the model. The model-view-controller is just one of the architecture design patterns developers use while building the app, still it is popular in development.

 

Xcode

 

Xcode is Apple’s integrated development environment (IDE) and it is the main tool for building iOS apps. iOS developers can work applying either Objective-C or Swift in fact using only Xcode. This software only runs on Macs and there are no official ways to launch it on a Windows or Linux PC.

 

Xcode has tons of features for iOS development, among which:

 

Interface Builder. It allows designing and testing user interface without writing a code. Interface Builder helps to prototype and then connect interface to the source within the Xcode editor.
 
Source Editor. It is a professional editor with code completion, code folding, syntax highlighting, and messages that display warning, errors, and other context-sensitive information.
 
Continuous Integration. It is a feature of OS X Server controlling server-side bots that continuously build, analyze, test, and even archive Xcode projects.
 
XCTest Framework. It assists to build unit tests that check iPhone, iPad, Apple Watch, Apple TV and Mac apps performance.
 
iOS Simulator. It allows prototyping and testing app during the development process. This testing tool simulates iOS, watchOS, and tvOS devices before testing the app on an actual device.

 

iOS programming languages

 

Two fundamental programming languages for iOS development are Objective-C and Swift. The benefits and drawbacks of each language were considered in our earlier post.

 

At the moment Objective-C is commonly described as the general-purpose, object-oriented programming language adding Smalltalk-style messaging to the C programming language. Before Swift came into play, Objective-C had been the main programming language used by developers for OS X and iOS operating systems, and their APIs. Swift, introduced at Apple’s 2014 WWDC, brought its own dose of revolution. In general description, Swift is a general-purpose, multi-paradigm, compiled programming language broadening the previous scope of operating systems as it was developed for iOS, OS X, watchOS, tvOS, and Linux. Swift was designed to enable work with Apple’s Cocoa and Cocoa Touch frameworks as well as the large body of Objective-C code already written for Apple products. 

 

Initially Swift was intended to be more resilient and safer than Objective-C, and also more concise and developer-friendly. It was built with the LLVM compiler framework including in Xcode 6 and using the Objective-C runtime library that enables C, Objective-C, C++ and Swift code to run within one program.  Therefore, it enhances broadening professional horizons for developers making their work more efficient. That was the milestone when developers started their discussion of what is better, tradition or innovation.

 

Since 2014, Swift language has been used by Xcode for coding more often than Objective-C. Objective-C is the initial programming language for building OS X and iOS software and in perspective of all the apps coded for iOS, it presents a superset of the C-programming language and provides object-oriented programming and dynamic runtime. Nowadays, Objective-C is a good fit for early iPhone and it is also effectively applicable for maintaining and updating the apps initially created in it. Swift in its turn is newer  and more flexible programming language for Apple devices that has the best features of C and Objective-C, without the constraints of C compatibility. It keeps step with modern hardware being faster in actual process of coding as well as shorter, more secure and easy-to-use. 

 

tubik ios development

 

Read more about the topic in our previous article 

 

Anyway, the choice of the programming language, framework, method, and tool for creating iOS apps should be based on the intention to provide the efficient product to both the client and the final user. 

 

This set of our glossary is ready for those who need it and we are going to continue this practice before long. Don’t miss the new sets. If there are any specific terms you would like to see explained, described and illustrated, feel free to contact via direct message in our Facebook page or Twitter as well as our Quora representative. New definitions are coming soon!


Welcome to read the articles by Tubik Studio on web and app development

Welcome to read us on Quora

ios development tubik swift objective-c

Swift or Objective-C? Tool Tips for iOS Developers.

In creative process, there are always some points of choice and contradictions. While UX designers are debating about Photoshop vs Sketch theme and give their opinions on efficient prototyping tools, iOS developers also have their own big debate. Today we are going to pitch in and add some of our thoughts to this global discussion of which programming language is better, Objective-C or Swift. We asked Tubik CTO and experienced iOS developer Maria Nazarenko to share her opinion with Tubik Blog readers.

 

Brief background

 

Let’s start with a tiny bit of history. The first and therefore the eldest in the discussed pair of programming languages was Objective-C. Primarily it saw the light of the day in early 1980s and was created by Brad Cox. So, one of the points that could be definitely applied to this programming language is that it’s really tried-and-true and tested by several generations of developers.

 

At the moment Objective-C is commonly described as the general-purpose, object-oriented programming language adding Smalltalk-style messaging to the C programming language. Before Swift came into play, Objective-C had been the main programming language used by developers for OS X and iOS operating systems, and their APIs.

 

Swift, introduced at Apple’s 2014 WWDC, brought its own dose of revolution. In general description, Swift is a general-purpose, multi-paradigm, compiled programming language broadening the previous scope of operating systems as it was developed for iOS, OS X, watchOS, tvOS, and Linux. Swift was designed to enable work with Apple’s Cocoa and Cocoa Touch frameworks as well as the large body of Objective-C code already written for Apple products.

 

Initially Swift was intended to be more resilient and safer than Objective-C, and also more concise and developer-friendly. It was built with the LLVM compiler framework including in Xcode 6 and using the Objective-C runtime library that enables C, Objective-C, C++ and Swift code to run within one program.  Therefore, it enhaces broadening professional horizons for developers making their work more efficient.

 

That was the milestone when developers started their discussion of what is better, tradition or innovation.

 

tubik ios development

 

What is better: Objective-C or Swift?

 

Some time ago expressing our opinion in the hot global discussion about the choice between Photoshop and Sketch we mentioned: “The answer we would like to give is really simple. There is no any vs. There shouldn’t be any war between the options which can complement each other. Obviously, now there is no any perfect and ideal software for design: if it existed, everybody would use only this ideal choice and there wouldn’t be any need for fight.»

 

It seems that in iOS development the situation of today is really similar. The choice is not so obvious as it could seem even after reading about all the extended functionality of Swift in comparison with Objective-C. In practice Objective-C is checked and tested over the years while Swift is young and new. Huge bulk of products have been developed in Objective-C so transition to the other perspective is definitely taking some time and effort.

 

Briefly characterizing the programming languages according to her extended practical experience in iOS development, Tubik CTO Maria mentions that although Objective-C is older and common, Swift could be described as more simple in syntax and stable in work process.

 

Swift Objective-C development tubik

 

Which programming language is more useful to know?

 

Due to Xcode which is the integrated developing environment (IDE) with a set of software development tools iOS developers can work applying either Objective-C or Swift in fact using the same developer tool.

 

As long as Objective-C exists much longer, it’s natural that plenty of simple and complex applications have already been accomplished with this language. Not knowing Objective-C and starting straight from Swift can limit developer’s professional flexibility. It can be especially obvious in case when developers have to update existing products.

 

Sometimes it happens that developers, knowing only Swift, recommend to rewrite existing (perhaps big or even huge) piece of code from Objective-C to Swift, the customers logically do not see this acceptable and certainly do not accept the necessity to pay for this work.

 

Considering this, the best option is knowing both languages. That gives developers natural professional flexibility for any task and environment they have to tackle with in current projects. There are two strategies which mostly depend on the time available.

 

In case if there is considerable amount of time between studying basics and applying them into real practice, our advice is to start with Objective-C. Although it is often described as more complicated, it establishes a solid foundation of basic principles and routine of creating applications for and using iOS system. On this basis, learning another iOS language such as Swift which is syntactically simpler will not seem too hard.

 

However, there can be also another strategy, a bit more dynamic than the previous one and applicable for those who don’t have enough time in their disposal needing to start actual work asap. In this case, you can start with Swift as it is easier in syntax and more similar to other programming languages so it will take less time to start practical coding. Getting the basics of development in this way, don’t forget to add Objective-C to the practice and polish skills in both languages. It will definitely give result if approached thoughtfully and rigorously.

 

iOS development swift objective-c

 

Here in Tubik Studio we believe that the only single thing that a designer and developer should think about is the high quality of the final product. The highest. Quality. Possible. Period.

 

Any tool and method chosen for this aim is a good way as long as it provides the efficient product to the client and the final user.

 

Don’t miss our next articles on iOS development giving practical tips and case studies of coding complex design decisions.


Welcome to see designs by Tubik Studio on Dribbble and Behance