Our Global Presence
Canada
57 Sherway St,
Stoney Creek, ON
L8J 0J3
India
606, Suvas Scala,
S P Ring Road, Nikol,
Ahmedabad 380049
USA
1131 Baycrest Drive,
Wesley Chapel,
FL 33544
Apple launches its newest iOS update to all the developers around the world this WWDC22. It brings a whole bunch of new changes that not only make iOS look eye-candy-er, but also help users get more done.
If you aren’t a developer, still, keep scrolling to know the most-awaited powerful features you’re gonna enjoy with in the public release of iOS 16 this September.
Apple gives never-before attention to lock screen customisation in iOS 16. This update, you can create depth effect for your portraits. i.e., the time appears behind your head on the wallpaper.
You can now add widgets directly on the lock screen. This helps you keep info like weather, activity rings, today’s events handy and not unlock your iPhone for everything.
Apple brings its new wallpaper gallery to iOS (similar to Apple Watch’s watch face gallery) that features productive wallpapers like astronomy, weather, slideshow etc.
Notifications now roll up from bottom so they don’t hinder your personalised wallpaper’s beauty.
You can now track the live score of an ongoing match, food delivery order, workout etc. directly on the lock screen.
Focus gets more powerful with iOS 16. You can now schedule different focus-es throughout the day.
Plus, you can assign a focus mode to a wallpaper, so whenever you set it, the focus gets on.
Apps like Mail, Calendar, Messages, and Safari now integrate with focus to display you only the content that’s relevant to the focus i.e., if you turn on work focus, only work things get displayed.
If you’re a bad typer, you’ve probably repented for your typos in important messages. Thankfully, iOS 16 understands you. It brings options to edit a message even after its sent.
You can also undo send, recover recently deleted messages, and mark messages as unread to come back later.
With iOS 16, you can type and dictate both simultaneously. Though this is a small change, it shows a massive impact on how you type emails or create word docs.
Live Text goes to next level in iOS 16. It could now translate and replace what’s written on that sign-board before you. It also boasts some handy features like currency conversion etc.
And, Live Text now arrives to videos too. So, if you’re a programmer, you can now pause a video to copy the code on the frame.
Visual Lookup now gets smarter. It can recognise animals, birds, statues and give you the ability to lift it up and copy without background and share the image in apps like Messages, Notes etc.
Apple now brings Apple Pay Later to users in US. If you’re in the US, this will allow you to split an Apple Pay purchase into four equal payments spread over six weeks with zero interest or extra fees.
The new Apple Pay Order Tracking now allows you to track your orders paid via Apple Pay with participating merchants.
Apple brings multistop routing which allows you to plan upto 15 stops in advance.
You’ll now get advanced transit features like
without ever leaving Maps.
The street view is now supported in more than a dozen cities around the world.
The new iCloud Shared Photo Library offers an easy way to share photos with family. It can be collaborated with upto 5 people who have equal permissions to add, delete, edit photos.
This will especially helpful in vacations.
The photos can be set to automatically add by date, faces, and places without worrying about what photos to add. If you want to add a photo to a shared library as soon as it’s snapped, you can do it directly in the Camera app.
SharePlay now comes to iMessage so you and your friends can enjoy your favourite content all while chatting together.
Not only that, you receive SharePlay suggested apps directly while on a FaceTime call so you don’t need to open the app to do that.
We’ve got tab groups with iOS 15. And with iOS 16, you can share and collaborate on them with friends and family.
And, Passkey finally arrives to Safari. With this, you lose the need of storing or remembering passwords. You can easily login to supported websites by Face or Touch ID.
On non-Apple devices, just scan the displayed code with your iPhone, like you do for WhatsApp web, and you’re good to go.
On a FaceTime or phone call, you can simply say, “Hey Siri! Hang up.” to do it without lifting a finger.
The Health app can now track your medications and can also give alerts if there persist any harmful drug-drug interactions.
If you don’t have an Apple Watch, your iPhone can now fill the void, all standalone. It can almost accurately track your workouts. All you need to do is to put your iPhone in your pocket while working out.
With the new privacy tool called Safety Check, if you perceive risk from your domestic or intimate partner, you can revoke their access to your location and other data, and sign-out of iCloud on all other devices and limit messaging just to the device in your hand.
Overall, iOS 16 looks like a very useful update for all types of people, be it a busy CEO, a student, or a normal home maker. New amazing features never stop coming to iOS, right?
For more information and to develop iOS Mobile Apps, Hire iOS Developer from us as we give you a high-quality product by utilizing all the latest tools and advanced technology. E-mail us any clock at – hello@hkinfosoft.com or Skype us: “hkinfosoft”. To develop iOS Mobile Apps, please visit our technology page.
Content Source:
Apple has just released iOS 14.2 and iPadOS 14.2. Below are the set of new enhancements and a list of the bug fixes that should help you decide to update your iPhone or iPad now or skip to the next one.
We would advise you to skip this update for your iPhone/iPad if the below info does not excite you or if you are not facing any issues with your device so far. Apple has a track record of battery issues with new updates, and this time might not be different than the previous ones. The current iOS 14.1 and iPadOS14.1 has good battery management.
Anyway, let’s jump to the list of changes.
iOS 14.2 includes the following improvements for your iPhone:
This release also fixes the following issues:
iPadOS 14.2 includes the following improvements for your iPad:
This release for iPadOS also fixes the following issues:
For more information and to develop iOS Mobile Apps, Hire iOS Developer from us as we give you a high-quality product by utilizing all the latest tools and advanced technology. E-mail us any clock at – hello@hkinfosoft.com or Skype us: “hkinfosoft”. To develop iOS Mobile Apps, please visit our technology page.
Content Source:
Apple in June 2020 introduced the latest version of its iOS operating system, iOS 14, which is set to be released this fall. iOS 14 is one of Apple’s biggest iOS updates to date, introducing Home screen design changes, major new features, updates for existing apps, Siri improvements, and many other tweaks that streamline the iOS interface.
First and foremost, iOS 14 brings a redesigned Home Screen that includes support for widgets for the first time. Widgets can be dragged from the Today view right onto the Home Screen and can be pinned in different sizes.
With a Smart Stack feature, the iPhone can use on-device intelligence to surface the right widget based on time, location, and activity. Each Home Screen page can display widgets customized for work, travel, sports, and more. The Today section where widgets are housed has also been redesigned, and there’s a widget gallery where users can choose new widgets from apps and customize those widgets.
Swiping all the way to the end of the app pages on an iPhone opens the new App Library, which is an interface that shows all of the apps on your iPhone to see everything at a glance. Apps are organized into your folder system, but there are also Apple-created folders like Suggestions and Apple Arcade that intelligently surface apps. New app downloads can be added to your Home Screen or kept in the App Library to keep your Home Screen cleaner.
New space-saving measures mean incoming phone calls and Siri requests no longer take over the entire screen. Phone calls (and FaceTime/VoIP calls) show up in a small banner on the iPhone’s display while activating Siri shows a small animated Siri icon at the bottom of the screen.
With a Picture in Picture mode, users can watch videos or talk on FaceTime while also using other apps at the same time, with FaceTime or a video playing in a small window that can be resized and relocated to any corner of the iPhone’s screen.
Siri is smarter in iOS 14 and can answer a greater range of questions with info pulled from across the internet, and Siri can also send audio messages. Keyboard dictation runs on the device, adding an additional layer of privacy for dictated messages.
Apple added App Clips to iOS 14, letting users take advantage of some app features without needing to download the full app. App Clips can let you do things like rent a scooter, purchase a coffee, make a restaurant reservation, or fill a parking meter just by scanning a code, with no need to download a full app.
Apple describes App Clips as just a “small part of an app experience” designed to be found in the moment it is needed. App Clips work through Apple-designed App Clip codes, NFC tags, or QR codes, and can also be shared in Messages or from Safari.
We have a new styling option for our UIPageControl called BackgroundStyle. This is an enum with three values:
@available(iOS 14.0, *) public enum BackgroundStyle : Int { /// The default background style that adapts based on the current interaction state. case automatic = 0 /// The background style that shows a full background regardless of the interaction case prominent = 1 /// The background style that shows a minimal background regardless of the interaction case minimal = 2 }
The usage is quite simple. By default, it is minimal:
pageControl.backgroundStyle = .prominent
Note: When an interaction state is continuous, the background style changes automatically if you set backgroundStyle to automatic. I discuss interaction APIs later in this article.
Apple has introduced a new API to set a custom icon or image to our UIPageControl compared to the old circular icon.
I remember a lot of effort was dedicated to achieving this by writing a custom UIPageControl class. The property name is below:
/// The preferred image for indicators. Symbol images are recommended. Default is nil. @available(iOS 14.0, *) open var preferredIndicatorImage: UIImage?
The usage is quite simple. I have used SF Symbol for this demo:
pageControl.preferredIndicatorImage = UIImage.init(systemName: "heart.fill")
/** * @abstract Returns the override indicator image for the specific page, nil if no override image was set. * @param page Must be in the range of 0..numberOfPages */ @available(iOS 14.0, *) open func indicatorImage(forPage page: Int) -> UIImage?
Do you remember the Yahoo Weather app that came pre-installed in your iPhone? It has the UIPageControl below where the first icon is a location icon that denotes the current location. The interesting part is they had this control from the very beginning. I always used to think about the implementation and effort required just to achieve this.
Yahoo Weather app UIPageControl screenshot
Now it’s a piece of cake because iOS 14 has given us a new API with which you can set a custom icon for each index of your UIPageControl.
I have used SF Symbol for this demo:
pageControl.setIndicatorImage(UIImage.init(systemName: "location.fill"), forPage: 0)
Just imagine the customization you can do with the power to set each icon and the user experience you can give to our user.
Below is an example where a custom icon is set to page control based on different rainy weather conditions.
With the new UIPageControl, you can set an infinite number of pages. Well, don’t create infinitely… but how cool is that?
The usage is quite simple. I have set it to 400 here for this demo:
pageControl.numberOfPages = 400
Prior to iOS 14, we could set any number of pages. So what did Apple do this year to improve scenarios like this?
Well, it has introduced a new API and completely new UX for handling this very issue.
Apple has provided a custom interaction for our new UIPageControl in iOS14 called InteractionState. It is an enum with two interaction types:
In iOS 14, the default value of UIPageControl’s interaction is continuous:
@available(iOS 14.0, *) public enum InteractionState : Int { /// The default interaction state, where no interaction has occured. case none = 0 /// The interaction state for which the page was changed via a single, discrete interaction. case discrete = 1 /// The interaction state for which the page was changed via a continuous interaction. case continuous = 2 }
You can change the interaction state to discrete by setting the property below to false:
/// Returns YES if the continuous interaction is enabled, NO otherwise. Default is YES. @available(iOS 14.0, *) open var allowsContinuousInteraction: Bool
You can also add an observer to change the value of the interactionState property and check the current interaction state with the property below:
/// The current interaction state for when the current page changes. Default is UIPageControlInteractionStateNone @available(iOS 14.0, *) open var interactionState: UIPageControl.InteractionState { get }
Below, I have shared GIFs of these two types of interactions. You can see that continuous interaction helps us to reach any index of our UIPageControl with a drag behavior. For the discrete interaction, we tap on it and we move to the next index one by one.
For more information and to develop iOS Mobile Apps, Hire iOS Developer from us as we give you a high-quality product by utilizing all the latest tools and advanced technology. E-mail us any clock at – hello@hkinfosoft.com or Skype us: “hkinfosoft”. To develop iOS Mobile Apps, please visit our technology page.
Content Source:
On the 25th of March Apple announced that the release process for Swift 5.3 has begun, it’s a major change since it will improve the overall language quality and performance, and will make Swift available for multiple platforms as Windows and Linux. But let’s see in detail whats new.
Currently a class extending a protocol needs to match exactly the protocol’s requirements, for example if we write static requirements within a protocol:
protocol DecodingError { static var fileCorrupted: Self { get } static func keyNotFound(_ key: String) -> Self }
And then we try to conform an enum to our protocol, we’ll face the following error:
With SE-0280 this will no longer cause a compiling error.
Swift 5.3 finally introduced the possibility to use multiple trailing closures.
First of all for those who don’t know what a trailing closure is, it’s a simple syntactic sugar that we can use when we have a closure parameter in a function:
func networkCall(parameter:Int, onSuccess:(Any)->Void) { //network call onSuccess("someNetworkResult") }
and we can simply call the function as follows:
networkCall(parameter: 1) { (result) in print(result) }
This is an amazing feature and allows us to write cleaner and easier to read code, however it’s currently limited only to the last parameter of a function as we can see in the following example:
With SE-0279 we will be allowed to insert extra trailing closures, just by adding extra labels, therefore the following code will compile.
networkCall(parameter: 1){(progress) in print(progress) }, onSuccess{ (result) in print(result) }
The last decade has seen a dramatic increase in the use of floating-point types smaller than (32-bit) Float. The most widely implemented is Float16, which is used extensively on mobile GPUs for computation, as a pixel format for HDR images, and as a compressed format for weights in ML applications. Introducing the type to Swift is especially important for interoperability with shader-language programs; users frequently need to set up data structures on the CPU to pass to their GPU programs. Without the type available in Swift, they are forced to use unsafe mechanisms to create these structures.
Currently swift allows only a single error type for each catch clause, that means that if we define the following enum
enum NetworkError: Error { case timeout, serverError }
Assuming someNetworkCall is a function that throws a NetworkError, and we want to handle both errors, we will need to write two separate catch clauses:
func networkCall(){ do{ try someNetworkCall() }catch NetworkError.timeout{ print("error") }catch NetworkError.serverError{ print("error") } }
With SE-0276 we will be allowed to handle both errors on a single catch clause, with the following code:
func networkCall(){ do{ try someNetworkCall() }catch NetworkError.timeout, NetworkError.serverError{ print("error") } }
Currently we can use Range to refer to multiple consecutive positions in a Collection, but there’s not a simple way to do this for discontiguous positions, based on some condition.
For example if we have an array of numbers from 0 to 15 and we want to get a sub range of the Array, let’s say with only even numbers, the language doesn’t provide any way to get it, or even to get a sub Array with elements with non contiguous positions, but we can only select a range of contiguous elements:
SE-0270 adds a super useful “RangeSet” Method that will allow us to get a subRange of all the indexes of the elements that satisfy a specific condition, therefore, if we want to get only even numbers from the previous array, the following code will work:
var numbers = Array(1...15) // Find the indices of all the even numbers let indicesOfEvens = numbers.subranges(where: { $0.isMultiple(of: 2) }) // Perform an operation with just the even numbers let sumOfEvens = numbers[indicesOfEvens].reduce(0, +) // sumOfEvens == 56 // You can gather the even numbers at the beginning let rangeOfEvens = numbers.moveSubranges(indicesOfEvens, to: numbers.startIndex) // numbers == [2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15] // numbers[rangeOfEvens] == [2, 4, 6, 8, 10, 12, 14]
Currently in closures we need to use explicit self even in some cases where reference cycles are unlikely to happen, for example because we already captured self in the current closure:
To make our code compile we need to add explicit self to x in order to reference it.
didSet
SemanticsCurrently, if we have a property with a “didSet” observer, the getter to get the oldValue is always called, even if observer doesn’t contain any reference to the oldValue in its body, for example the following code
struct Container { var items: [Int] = .init(repeating: 1, count: 100) { //creates an Array of 100 elements didSet { print("value set")//oldValue never Accessed } } mutating func update() { for index in 0..<items.count { items[index] = index + 1 } } } var container = Container() container.update()
creates 100 copies of the array in the memory to provide the oldValue
, even though they’re not used at all, causing performance issues.
With SE-0268 the property getters will be no longer called if they’re not accessed within the didSet resulting in a performance boost.
class Foo { var bar = 0 { didSet { print("didSet called") } } var baz = 0 { didSet { print(oldValue) } } } let foo = Foo() // This will not call the getter to fetch the oldValue foo.bar = 1 // This will call the getter to fetch the oldValue foo.baz = 2
Where
Clauses on Contextually Generic DeclarationsCurrently a where clause on a member declaration can be used only by placing the member inside a specific extension, but this can sound confusing, let’s make an example.
Let’s say we want to extend the Array implementation to sort element of 3 different types, for which we want to define a different sorting logic.
Currently we would need to extend Array 3 times:
extension Array where Element == String { func sortStrings() { ... } //some specific sorting logic } extension Array where Element == Int { func sortInts() { ... } //some specific sorting logic } extension Array where Element: Equatable { func sort() { ... } //some specific sorting logic }
With SE-0267 we can implement that logic by simply adding the where clause to the function in a single extension:
extension Array where Element: Equatable { func sort() { ... } func sortInts() where Element == Int { ... } func sortStrings() where Element == String { ... } }
Comparable
Conformance for Enum TypesLet’s say we want to define an Enum whose cases have an obvious semantic order, for example:
enum SchoolGrades { case F case E case D case C case B case A }
If we try to compare its values we got the following error:
In order to compare two Objects, they need to conform the Comparable protocol:
looking at the warning this will generate a loop, since the < function will be calling itself, therefore we need to compare the rawValues so that we can finally compare our grades.
This, is just a simple case, and it adds a lot of boilerplate code.
With SE-0266 this will not be necessary and we don’t need any additional code to compare Enums.
For more information and to build a mobile APP using iOS, Hire iOS Developer from us as we give you a high-quality product by utilizing all the latest tools and advanced technology. E-mail us any clock at – hello@hkinfosoft.com or Skype us: “hkinfosoft”. To develop your mobile APP using iOS, please visit our technology page.
Content Source:
It’s been more than five years from its release date (September 2014) and Apple kept upgrading the language up to Swift 5, sometimes providing good features, sometimes just updating the Xcode IDE and Storyboards improvements.
Then, the SwiftUI language was presented at WWDC 2019 in June and it started becoming popular soon after. It looks like everybody loves SwiftUI.
There are many differences between the two, and even if we don’t have an expiration date for the legacy Auto Layout support, speculations and rumors whisper that SwiftUI will be the future of the UI/UX developing tools in iOS programming.
The Auto Layout system was conceived by Apple in 2011 and as released to developers and supported in iOS a bit later.
Auto Layout bases its features on a system that is capable of adapting its rendering and appearance using constraints and rules defined by developers.
These rules specify whether or not views should appear larger, should shrink, should shift position coordinates, and more, making all UI components responsive and capable of adapting to screen sizes, resolutions, and different contexts.
The new SwiftUI has been conceived to reorder ideas on UI composition and developing.
If you look around, there are many frameworks, contexts, and technologies where the user interface is more “defined” than “composed”. Think about old XML based UI compositions, or even the HTML/CSS approach it’s basically declarative more than composed by using visual tools.
Declarative interfaces are popular in hybrid apps as almost all of them are developed using Flutter and Ionic.
Flutter uses declarative interfaces such as the old Sencha or the modern React native. In IONIC, the UI is pure HTML/CSS and it’s not much different.
Auto Layout and Storyboards are well-supported and well-known by developers.
We used Auto Layout so much during the year and we know how to approach the problem.
SwiftUI uses the same approach theoretically (SwiftUI is basically a different way to set Auto Layout-like constraints, it’s not a separate tool or a separate technology), but it’s fresh, new, and sometimes this has a negative impact on the developers’ experience.
SwiftUI looks cool and looks fast to code
Simple interfaces can be coded in zero to little time due to basic components that automatically integrate basic constraints and behaviors.
Storyboards and segues give you an idea of what you’re doing
SwiftUI is basically conceived to design a single view.
Xcode Storyboards is supported by custom views extensions
Xcode Storyboards is supported by custom views extensions via @IBDesignable decorators, SwiftUI needs time to become supported and integrated by custom tools developed by the community.
SwiftUI is supported in iOS 13 only
This is probably the most influential negative aspect, because SwiftUI-based apps won’t be released in enterprise environments for at least one year.
there’s no official announcement about how to eventually make it work on earlier iOS versions. This might not impact B2B apps, but definitively does in B2C and trending apps, regardless of iOS user’s habits on keeping the OS updated.
SwiftUI has real-time preview
Finally, we have a “responsive” way to code our views, something we really wanted in Storyboards and UIKit, where previews were low quality and sometimes not efficient when using custom views and dynamic content.
SwiftUI has simplified animations
Something we really missed in old systems, where you have to fight with UIView.animate()
and more. The new easing and animation system looks way better.
SwiftUI is for sure the step to take if you want to follow Apple’s modern interpretation of UI developing.
If you still need something which will not affect your timing provisioning for a new release or a new project your customer is waiting for, continue to use Storyboards or Auto Layout.
For more information and to build a mobile APP using iOS, Hire iOS Developer from us as we give you a high-quality product by utilizing all the latest tools and advanced technology. E-mail us any clock at – hello@hkinfosoft.com or Skype us: “hkinfosoft“. To develop your mobile APP using iOS, please visit our technology page.
Content Source:
57 Sherway St,
Stoney Creek, ON
L8J 0J3
606, Suvas Scala,
S P Ring Road, Nikol,
Ahmedabad 380049
1131 Baycrest Drive,
Wesley Chapel,
FL 33544
57 Sherway St,
Stoney Creek, ON
L8J 0J3
606, Suvas Scala,
S P Ring Road, Nikol,
Ahmedabad 380049
1131 Baycrest Drive,
Wesley Chapel,
FL 33544
© 2024 — HK Infosoft. All Rights Reserved.
© 2024 — HK Infosoft. All Rights Reserved.
T&C | Privacy Policy | Sitemap