• Skip to main content
  • Skip to primary sidebar

Ravi Shankar

Tweaking Apps

  • Swift
  • Tech Tips

iPad

Tuples in Swift

January 13, 2015 By Ravi Shankar Leave a Comment

Tuples in Swift allows user to assign group of values to a variable, constant and even return parameter of a function. In the below example, a employee constant is assigned Int and String values. And to access these parameters, we need to use .0 and .1

let employee = (103, “Deepak”)

employee.0

employee.1

Now let us say you want to assign proper name for these parameters so that you could access these values using those names instead of 0 and 1.

let employee = (id:103, name:“Deepak”)

employee.id

employee.name

Here id and name are parameter names provided for employee id and employee name. You can also declare the data types for the tuple values like Int and String

let employee:(id:Int, name:String) = (102, “Deepak”)

employee.id

employee.name

Tuples and switch cases are powerful combination, look at an example below where Tuple has been used with switch cases. The _ is used for matching any values.

let employee:(id:Int, name:String) = (102, “Deepak”)

switch (employee) {

case (103…105,_):

println(“developer”)

case (106…108,_):

println(“tester”)

case (_,“Deepak”):

println(“CEO”)

default:

println(“Contractor”)

}

Filed Under: Apple, ios, iPad, iPhone, Programming Tagged With: Apple, iPad, Switch, Tuples

Internationalization and localization of Apps in Xcode 6 and Swift

August 7, 2014 By Ravi Shankar 25 Comments

Internationalisation and Localization of apps is essential when you want the apps to seamlessly support different languages and region. Internationalization refers to process of providing a framework to the app for supporting multiple languages. And Localization refers to the process of making your app to support a particular locale such as German

In this tutorial, we are going to see an example app that supports text, number, date, currency and image localisation for English and German languages. This is done by following the below mentioned steps

  • Use NSNumberFormatter, NSDateFormatter for Number, Currency and Date values.
  • Internationalization of Storyboard.
  • Internationalization of text.
  • Internationalization of images.

English

201408072015.jpg

German

 

201409302136.jpg

Download source code from GitHub

Create a new project by clicking File menu -> New -> Project

201408071400.jpg

Select the template for the Project as Single View Application.

201408071401.jpg

‘

In the next screen, provide a name for the project as “Localisation Demo” and select the Language as “Swift” then specify a location and save the project.

User Interface changes – UILabels and UIImageView on ViewController

 

Navigate to Main.storyboard, click default View Controller. Drag and drop 9 Labels and 1 ImageView from Object Library on to Storyboard. These labels are used for displaying the caption and values as shown in the below screenshot.

201408071642.jpg

Declaring IBOutlets for UIControls

Click ViewController.swift in project navigator and add the following IBOutlets after the class declaration.

[code language=”swift”]@IBOutlet var textLabel: UILabel!

@IBOutlet var numberLabel: UILabel!

@IBOutlet var currencyLabel: UILabel!

@IBOutlet var dateLabel: UILabel!

@IBOutlet var imageView: UIImageView!
[/code]

Navigate back to Main.storyboard and connect labels and imageView to the respective outlets.

201408071658.jpg

Populate values for the controls.

 

Click ViewController.swift in Project Navigator and create a new function with name as populateValues

[code language=”swift”]func populateValues() {
textLabel.text = “Good Morning”
numberLabel.text = “9999999.999”
currencyLabel.text = “50000”
dateLabel.text = “07/08/2014”
imageView.image = UIImage(named: “hello”)
}[/code]

The above function populates values for all the controls. The values which are assigned for the fields will be displayed in the screen without localization format. Then add this function as part of ViewDidLoad function.

[code language=”swift”]override func viewDidLoad() {
super.viewDidLoad()
populateValues()
}[/code]

Using Add Files to option, add the image hello.png to the Project folder.

201408071755.jpg201408071756.jpg

Now if you compile and run the project on iOS simulator, you should see the follow screen with values for the labels and image view.

201408071759.jpg

We do not see any formatting applied for Number, Date and Currency Values. Now let us see how to use NSNumberFormatter for formatting number and currency field and NSDateFormatter for formatting date field. Add the following properties after populateValues function in ViewController.swift file.

[code language=”swift”]var numberFormatter: NSNumberFormatter {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter
}
[/code]

[code language=”swift”]
var currencyFormatter: NSNumberFormatter {
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
return formatter
}[/code]

 

[code language=”swift”]var dateFormatter: NSDateFormatter {
let formatter = NSDateFormatter()
formatter.dateStyle = .MediumStyle
formatter.timeStyle = .MediumStyle
return formatter
}
[/code]

 

In the above functions, we are creating respective formatter instances and setting the corresponding styles such DecimalStyle, CurrencyStyle then MediumStyle for date and time values. Now we need to update populateValues function to use these properties for displaying the values.

[code language=”swift”]func populateValues() {
textLabel.text = “Good Morning”
numberLabel.text = numberFormatter.stringFromNumber(9999999.999)
currencyLabel.text = currencyFormatter.stringFromNumber(5000)
dateLabel.text = dateFormatter.stringFromDate(NSDate())
imageView.image = UIImage(named: “hello”)
}

[/code]

Now after applying the correct format, iOS Simulator will use the default system region to display the values for number, currency and date fields

201408071834.jpg

Adding support for another language to your Xcode Project

In order to enable support for German language, first we need to add that language to the Project. This can be done by using the option available as part of Project target. Select the Project folder then the Project target.

201408071715.jpg

Navigate to the Localization section and click the + sign then select German (de) from the list.

201408071718.jpg

Choose the default files listed in the below screen and click Finish.

201408071720.jpg

Now you should see support German language under Localizations section.

201408071720.jpg

Add Localization for controls in Storyboard

First let us see how to add support for another language for the Caption controls in Main.storyboard.

201408071728.jpg

Expand Main.storyboard and click Main.strings (German) . Now enter the German equivalent for Date, Currency, Number and Image as Datum, Währung, Anzahl and Bild. And for rest of the controls, localization will be done in the code.

201408071735.jpg[code language=”plain”]

/* Class = “IBUILabel”; text = “Date :”; ObjectID = “0sh-CK-26C”; */
“0sh-CK-26C.text” = “Datum :”;

/* Class = “IBUILabel”; text = “Number :”; ObjectID = “AeO-ot-XWj”; */
“AeO-ot-XWj.text” = “Anzahl :”;

/* Class = “IBUILabel”; text = “number”; ObjectID = “XDV-eF-gQk”; */
“XDV-eF-gQk.text” = “number”;

/* Class = “IBUILabel”; text = “Image :”; ObjectID = “bvG-x6-Tpx”; */
“bvG-x6-Tpx.text” = “Bild :”;

/* Class = “IBUILabel”; text = “Currency :”; ObjectID = “tVi-KF-Xgb”; */
“tVi-KF-Xgb.text” = “Währung :”;[/code]

Testing Localization changes in iOS Simulator

The changes to Main.storyboard (German) and NSNumberFormatter and NSDateFormatter will have no effect until we set the language and region to German in Xcode debug environment. Click Set the active scheme option and select Edit Scheme from the list.

201408071850.jpg

Navigate to Options under Debug Environment and select German and Germany for Application Language and Application Region.

201408071852.jpg

Now running the app on the iOS simulator should display the captions in german language and apply formats for number, date and currency fields based on German region.

201408071855.jpg

Internationalization of Text using NSLocalizedString

“Good Morning” has to be displayed in the corresponding German language i.e “Guten Morgen”. Add a new File to the project of type Strings and provide a name as Localizable.strings.

201408071912.jpg201408071913.jpg

Select Localizable.Strings in Project Navigator and click Localize button available under File Inspector.

201408071915.jpg

Then Select English in the Localize drop down and make sure to mark German in the Localization section under File Inspector.

201408071917.jpg201408071918.jpg

Now you should be able to expand Localizable.Strings under Project Navigator and see separate files for English and German.

201408071921.jpg

Add the following line in Localizable.Strings (English)

GOOD_MORNING=“Good Morning”;

Add the following line in Localizable.Strings (German)

GOOD_MORNING=“Guten Morgen”;

Now add the corresponding code to use the values from Localizable.Strings file. Click ViewController.swift and change

textLabel.text = “Good Morning”

to

textLabel.text = NSLocalizedString(“GOOD_MORNING”,comment:“Good Morning”)

NSLocalizedString will lookup for the corresponding entry in Localizable.Strings file for the supplied key. Running the app on iOS simulator should not display the German equivalent for “Good Morning”

201409302137.jpg

Internationalization of Images

In the above screenshot, you could see that text in the image is still in English. So we need to add the corresponding image that contains German text and make changes to pick up the entry based on the Application Language. After selecting hello.png in Project navigator, click Localize button under File Inspector. This should provide you with the option to Localize the file in English and German.

201408071954.jpg

Make sure to tick both English and German under Localization section in File Inspector.

201408071955.jpg

Open the Project folder in Finder tool and this should contain two folder for the languages de and en.

201408072004.jpg

Now copy hello.png with german text to de.lproj folder. Do a clean build and run the app on iOS simulator with language and region set to German.

201409302137.jpg

Download source code from GitHub

Filed Under: ios, iPad, iPhone, Programming, Xcode Tagged With: Internationalization, iPad, Localization, Swift, Xcode, Xcode 6

How to change bluetooth device name of iPhone/iPad/Mac

October 23, 2013 By Ravi Shankar Leave a Comment

Change bluetooth name for iPhone, iPad and Macbook Pro.

In this tutorial we are going to cover the steps required to change the device name that appears while discovering bluetooth enabled Apple devices. For example when you are trying to pair iPhone with MacBookPro, the Set up Bluetooth Device screen on Macbook Pro would display the following

Bluetooth Set up Wizard

Where “Ravi Shankar’s iPhone” is the name of my iPhone. Similarly on iPhone under Bluetooth settings, you should find the MacBook Pro’s name.

Bluetooth Paired device name on iPhone

How to change bluetooth device name for iPhone

Step 1: Tap the Settings icon on the Home screen.

Step 2: Under Settings, Tap General options.

General Settings on iPhone

Step 3: Navigate to About option under General Settings.

General Settings on iPhone

Step 4: In the About screen Tap Name option. This should provide an option to change the name of your iPhone.

201310231603.jpg   Change name on iPhone  

How to change bluetooth device name for iPad

Follow the same steps mentioned for iPhone (Step 1 to 4) to reach the Name screen on your iPad.

Change iPad bluetooth name

How to change bluetooth name for Macbook Pro

Step 1: Click the Apple icon and select System Preferences from the menu list

System Preferences on Macbook Pro

Step 2: In System Preferences screen, navigate to Internet & Wireless section and click Sharing option.

Sharing option on Mackbook Pro

Step 3: Click Edit button under Computer Name section and provide your preferred name.

Computer name on Macbook Pro

Change bluetooth computer name on Macbook Pro

Step 4: Click OK button to confirm and save the changes.

Also See:

1. Turn On/Off bluetooth on iPad

2. Rename bluetooth devices on Macbook Pro

3. What is Control Center in iOS 7

Filed Under: Apple, iPad, iPhone, Mac, Mac OS X Tagged With: Apple, Bluetooth, device name, iPad, iphone, Mac

Auto arrange Home screen icons on iPhone or iPad

April 9, 2013 By Ravi Shankar 1 Comment

This is a short tip on the steps required to auto arrange your apps on iPhone and iPad Home screen. This is useful when you have removed lot of unwanted apps on your device’s home screen and manually re-arranging the icons will be nightmare.

imageimage

Step 1: Access iPad or iPhone home screen and tap the Settings icon.

image

Step 2: In the Settings screen, navigate to General Options.

imageimage

Step 3: Scroll down and tap the Reset option under General Settings.

imageimage

Step 4: In the Reset screen. tap the Reset Home Screen Layout option. Then confirm your action by tapping the Reset Home Screen button. This should do the trick and will auto arrange all your apps on the Home screen.

Filed Under: iPad, iPhone Tagged With: apps, Autoarrange, Home Screen, Icons, iPad, iphone, Reset Home Screen

XCode’s iOS Simulator for iPhone and iPad

March 2, 2013 By Ravi Shankar Leave a Comment

iOS Simulator in Xcode can be used for testing iOS apps before trying the apps on a live device. Listed below are the different settings and features on iOS Simulator.

Launching iOS Simulator

iOS Simulator can be launched by executing Program on Xcode

Run Program on Xcode : Keyboard Shortcut is Command + R, Menu is Product -> Run

The screenshot of IOS Simulator is shown below.

201303021038.jpg

Another alternate way to launch the iOS Simulator is by using the menu option under

Xcode -> Open Developer Tool -> IOS Simulator

201303021039.jpg

iOS SDK Version

IOS SDK version of iOS Simulator can be determined by clicking the Hardware menu -> Version

201303021112.jpg

Deleting Apps and Settings

Reset Content and Settings option clears all the apps and settings from the simulator. For example if you have changed the app icon, the new icon will not be displayed unless you delete the app from the simulator and re-run the program.

201303021133.jpg

You can also delete individual apps by clicking and holding the installed apps followed by clicking delete mark just like you do on any iOS device.

201303021135.jpg

Choosing the device screen on Simulator

IOS Simulator allows users to choose different device screens such as iPad, iPad (Retina), iPhone, iPhone (Retina 3.5 inch) and iPhone (Retina 4 inch). You can choose the desired screen by navigating to Hardware menu option and selecting the Device.

201303021206.jpg

It is always recommend to try out the apps on the different device simulator before releasing it on the App Store. For example if you are developing an app for the iPhone then you need to try out in all the 4 iPhone device simulator apart from testing your app on live device.

Taking App Screenshots using Simulator

IOS Simulator can be used for taking screenshots of your app for publishing app on the App Store. This is quite useful when you do not have all IOS devices but still want to see the screenshots of your app. The Screenshots can be taken by loading the app on the Simulator and clicking the File menu -> Save Screenshot. The screenshot will be saved to your desktop in .PNG file format.

201303021146.jpg

IOS Simulator also provides option to copy the individual screen from the simulator using the option available as part of the Edit menu.

201303021200.jpg

Other Hardware features

IOS Simulator has features that lets users to see the behaviour of the app on each action such as Rotating Screen to Left, Rotating the Screen to Right, Shake Gesture, Accessing the Home Screen, Locking the Device and also simulating low memory warning.

201303021214.jpg

Simulate Locations

Location menu option under the Debug menu is quite useful for development of location based apps. This lets developers to simulate location required for testing their app.

201303021218.jpg

iOS Simulator Screen Zooming

IOS Simulator screen size can be increased and decreased based on your need using Window -> Scale menu option.

201303021222.jpg

Filed Under: Apple, Develop, ios, iPad, iPhone, Xcode Tagged With: Apple, iOS Simulator, iphone

How to archive multiple email messages on iPhone or iPad

May 29, 2012 By Ravi Shankar Leave a Comment

This tutorial provides the steps required for archiving multiple email messages on iPhone or iPad. You can use the same procedures for deleting or moving more than one messages.

Step 1: Tap the Mail app on iPhone or iPad.

201205290908.jpg

Step 2: Select the mailbox for archiving email messages then tap the Edit button.

201205290909.jpg

Step 3: You can use the check box for selecting the email messages.

201205290911.jpg

201205290911.jpg

Step 4: Then tap the button available at the bottom of the screen to archive the message.

Step 5: You can also move the selected messages to a different fodder using the Move button or Flag the messages using the Mark option.

201205290915.jpg

Screenshot of delete option available for mail account configured on iPad

201205290916.jpg

Filed Under: Apple, iPad Tagged With: Apple, archived, iphone, Messages, multiple

How to retrieve the archived messages in iPad or iPhone

May 28, 2012 By Ravi Shankar Leave a Comment

This answers the query posted by a reader regarding “How to retrieve the archive messages in iPad “. The below mentioned steps can be used for seeing the archived messages of GMail account on iPad as well as iPhone.

Step 1: Tap the mail icon on iPad or iPhone.

201205282221.jpg

Step 2: In the Mail App, navigate to Accounts section and tap your Gmail account.

201205282223.jpg

Step 3: The GMail account Mailbox will display a folder named All Mail.

201205282224.jpg

The All Mail folder would contain all the archived message of GMail account on your iPad on iPhone.

Read: How to block contact in IOS 7 for iPhone

Filed Under: iPad Tagged With: archived, iphone, Messages, Retrieve

How to hide bookmarks bar in Safari on iPad

February 12, 2012 By Ravi Shankar 10 Comments

Safari browser on iPad, like any other PC or Mac browsers allows users to save webpage URL as bookmark. It also provides a separate Bookmarks Bar for easily accessing these saved URLs.

201202120828.jpg

Screenshot with saved bookmarks

201202120831.jpg

If you are not using the Bookmarks Bar on Safari then you have the option to turn off the display of Bookmarks Bar. This would give more space for the web page browsing and you can still access the saved bookmarks using the Safari browser menu items.

Hide Bookmarks Bar on Safari

Navigate to iPad home screen and tap the settings icon. Then navigate to the General section under Safari settings.

201202120839.jpg

Slide the ON/OFF switch to turn off the “Always Show Bookmarks Bar”

201202120842.jpg

Filed Under: Apple, iPad, Safari Tagged With: Apple, Bookmark, hide, iPad, Safari, Turn Off

  1. Pages:
  2. «
  3. 1
  4. 2
  5. 3
  6. »
« Previous Page
Next Page »

Primary Sidebar

TwitterLinkedin

Recent Posts

  • How to set preferred Wifi network on Mac
  • Attribute Unavailable: Estimated section warning before iOS 11.0
  • How to recover Firefox password from Time Machine backup
  • Show hidden files and folders on Mac
  • How to request a refund for apps in App Store

Pages

  • About
  • Privacy Policy
  • Terms and Conditions

Copyright 2022 © rshankar.com

Terms and Conditions - Privacy Policy