SlideShare a Scribd company logo
How to add Custom Font to 
your iOS-based App?
About Neev 
Magento 
Hybris Commerce 
SaaS Applications 
Adobe Marketing Cloud 
Custom Development 
Key Company Highlights 
300+ team with experience 
in managing offshore, 
distributed development. 
Neev Technologies 
established in Jan ’05 
VC Funding in 2009 By 
Basil Partners 
Part of Publicis Groupe 
Hybris and Adobe CQ 
centers of Excellence 
Offices at Bangalore, 
Gurgaon, Pune, Mumbai 
Member of NASSCOM 
Mobile Cloud 
iPhone 
Android 
PhoneGap 
Windows Phone 
HTML5 Apps 
Web 
AWS 
Rackspace 
Joyent 
Heroku 
Google Cloud Platform 
Digital Marketing, CRM, Analytics (Omni-Channel) 
User Interface Design and User Experience Design 
Performance Consulting Practices 
Quality Assurance & Testing 
Outsourced Product Development 
Click here to know more about us
Reusability of code – The Need 
• Neev follows the best coding practices to provide the highest quality 
software. 
• Reusability helps easily maintain an application. 
• If the application code is maintainable, then it is more flexible for new and 
challenging requirements. 
• In iOS-based Apps, custom fonts can be used in the many places. So, instead 
of copying the code repetitively, a better approach is to reuse. 
• iOS, Apple’s mobile operating system, doesn’t support all fonts. Thus, in order 
to use a custom font, we would need to include that custom font in the 
project we work on.
How to include Custom Font in an iOS App? 
1) Add the Custom font required by the application under folder named ‘Fonts’
How to include Custom Font in a Project? 
2) Add the name of the custom font in ‘.plist’ file with the key “Fonts provided by 
application” as in the below image.
How to include Custom Font in a Project? 
3) Check whether the custom font is appearing in the Target -> build phases –> copy 
bundle resources.
How can we implement a custom font in an iOS App? 
1) Create the class ‘NVLabel’ as a subclass of ‘UILabel’ as shown below. 
2) Add the below code in NVLabel.h file 
#import <UIKit/UIKit.h> 
@interface NVLabel : UILabel 
// NV font is used for automatically setting font and other look and feel 
// properties of UILabels 
// Usage: in XIB add a keyValue with key “NVFont” and value “_tile_headerSub_” 
// refer to util class for more details on values. 
@property (nonatomic, strong) NSString *NVFont; 
@end1
How can we implement a custom font in an iOS App? 
3) Add the below code in the NVLabel.m file 
{ 
self.NVFont = value; 
[FontUtil decorate:self]; 
} 
} 
// Only override drawRect: if you perform custom 
drawing. 
// An empty implementation adversely affects 
performance during animation. 
- (void)drawRect:(CGRect)rect 
{ 
// Drawing code 
} 
*/ 
@end 
#import “NVLabel.h” 
#import “FontUtil.h” 
@implementation NVLabel 
@synthesize NVFont; 
- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
// Initialization code 
} 
return self; 
} 
-(void) setValue:(id)value forKey:(NSString *)key 
{ 
if ([key isEqualToString:@"NVFont"])
How can we implement a custom font in an iOS App? 
4) Create the class FontUtils.h and FontUtils.m 
// FontUtil.h 
#import <Foundation/Foundation.h> 
#import “NVLabel.h” 
@interface FontUtil : NSObject 
+ (void)decorate:(NVLabel *)label; 
+(void)decorateView:(UIView *)view; 
+(UIFont*)robotoCondensedWithSize:(int)size; 
+(UIFont*)robotoRegularWithSize:(int)size; 
@end
How can we implement a custom font in an iOS App? 
5) In the class FontUtils.m, add the following code. 
NSString *font = label.NVFont; 
if (font == nil) { 
return; 
} 
// more specific conditions must be checked before 
generic ones. 
// Ex: _af_tile_header_ must be checked before 
_tile_header_ which in turn must be checked before 
_header_ 
if ([font hasSuffix:@"_title_Mac_"]){ 
label.font = [FontUtil robotoItalicWithSize:16]; 
label.textColor = [UIColor greenColor]; 
} else if ([font hasSuffix:@"_title_name_2"]){ 
label.font = [FontUtil robotoCondensedWithSize:18]; 
label.textColor = [UIColor redColor]; 
}else if ([font hasSuffix:@"title_sub_3"]){ 
label.font = [FontUtil robotoCondensedWithSize:14]; 
// FontUtil.m 
#import “FontUtil.h” 
#include <objc/runtime.h> 
#include “NVLabel.h” 
@implementation FontUtil 
+(UIFont*)robotoCondensedWithSize:(int)size{ 
UIFont *font = [UIFont fontWithName:@"Roboto- 
Condensed" size:size]; 
return font; 
} 
+(UIFont*)robotoItalicWithSize:(int)size{ 
UIFont *font = [UIFont fontWithName:@"Roboto- 
Italic" size:size]; 
return font; 
} 
+(void)decorate:(NVLabel *)label { 
label.textColor = [UIColor brownColor]; 
} 
} 
+(void)decorateView:(UIView *)view { 
NSArray *subviews = [view subviews]; 
for (int i = 0; i < subviews.count; ++i) { 
UIView *subview = [subviews objectAtIndex:i]; 
if ([subview isKindOfClass:[NVLabel class]]) { 
[FontUtil decorate:(NVLabel *)subview]; 
} else { 
[FontUtil decorateView:subview]; 
} 
} 
} 
@end
How can we implement a custom font in an iOS App? 
6) After addition of the above code to create the required set of files, go to view controller.xib . 
• Go to show identity inspector 
• Under Custom class, it should be a subclass of NVLabel 
• Below ‘User Defined Run-Time Attributes’, add the keypath as NVFont , font as String , Value of the 
string is in the below format _name_subname_
How can we implement a custom font in an iOS App? 
7) After adding the user defined attributes , go to FontUtils.m 
8) In the method, add the following code: 
label.font = [FontUtil robotoItalicWithSize:16]; 
label.textColor = [UIColor greenColor]; 
} else if ([font hasSuffix:@"_title_name_2"]){ 
label.font = [FontUtil robotoCondensedWithSize:18]; 
label.textColor = [UIColor redColor]; 
}else if ([font hasSuffix:@"title_sub_3"]){ 
label.font = [FontUtil robotoCondensedWithSize:14]; 
label.textColor = [UIColor brownColor]; 
} 
} 
+(void)decorate:(NVLabel *)label { 
NSString *font = label.NVFont; 
if (font == nil) { 
return; 
} 
// TODO 
// more specific conditions must be checked before 
generic ones. 
// Ex: _af_tile_header_ must be checked before 
_tile_header_ which in turn must be checked before 
_header_ 
if ([font hasSuffix:@"_title_Mac_"]){
How can we implement a custom font in an iOS App? 
9) In the above code, in if ([font hasSuffix:@"_title_Mac_"]), replace “title Mac” 
with the value of the string as given in the user defined attributes as in if([font 
hasSuffix:@”Value given in the user defined attributes”]) 
10)Include FontUtil.h in your class. In the ‘viewdidload’ method, call the [FontUtil 
decorateView:self.view]
Final Word 
• These steps can be used to add any number of custom fonts to an iOS App. 
• This method can be used for any iOS-based App that requires a custom font to 
be added to it. 
• Once the above steps are completed, iOS would allow the App to use the 
custom font. 
• To know more about our iOS application development capabilities, visit us 
here.
The Neev Edge 
• End-to-end consultative approach for software solutions through needs assessment, 
process consulting and strategic advice. 
• Internal QMS are ISO 9001-2008 certified and CMM level 3 compliant. 
• Continuous process and service level improvements through deployment of best-of-breed 
processes and technologies. 
• International Standards and best practices on Project Management including PMI, ISO 
and Prince-2. 
• Proven EDC Model of delivery to provide predictable results. 
• Scrum based Agile development methodology.
A Few Clients
Partnerships
Neev Information Technologies Pvt. Ltd. sales@neevtech.com 
India - Bangalore 
The Estate, # 121,6th Floor, 
Dickenson Road 
Bangalore-560042 
Phone :+91 80 25594416 
India - Pune 
Office No. 4 & 5, 2nd floor, L-Square, 
Plot No. 8, Sanghvi Nagar, Aundh, 
Pune - 411007. 
Phone :+91 20 64103338 
For more info on our offerings, visit www.neevtech.com
Ad

More Related Content

What's hot (20)

What is java fx?
What is java fx?What is java fx?
What is java fx?
kanchanmahajan23
 
Building Your First Xamarin.Forms App
Building Your First Xamarin.Forms AppBuilding Your First Xamarin.Forms App
Building Your First Xamarin.Forms App
Xamarin
 
A Better Interface Builder Experience
A Better Interface Builder ExperienceA Better Interface Builder Experience
A Better Interface Builder Experience
Justin Munger
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
Vinicius Quaiato
 
Visual studio professional 2015 overview
Visual studio professional 2015 overviewVisual studio professional 2015 overview
Visual studio professional 2015 overview
Lee Stott
 
Visual Studio IDE
Visual Studio IDEVisual Studio IDE
Visual Studio IDE
Sayantan Sur
 
What is Visual Studio Code?
What is Visual Studio Code?What is Visual Studio Code?
What is Visual Studio Code?
Mindfire LLC
 
iOS Distribution and App store pushing and more
iOS Distribution and App store pushing and moreiOS Distribution and App store pushing and more
iOS Distribution and App store pushing and more
Naga Harish M
 
Visual Studio
Visual StudioVisual Studio
Visual Studio
university of education,Lahore
 
Best Interactive guide on Top 10 Mobile App Development Frameworks
Best Interactive guide on Top 10 Mobile App Development FrameworksBest Interactive guide on Top 10 Mobile App Development Frameworks
Best Interactive guide on Top 10 Mobile App Development Frameworks
varshasolanki7
 
Sharbani bhattacharya Visual Basic
Sharbani bhattacharya Visual BasicSharbani bhattacharya Visual Basic
Sharbani bhattacharya Visual Basic
Sharbani Bhattacharya
 
Vb.net class notes
Vb.net class notesVb.net class notes
Vb.net class notes
priyadharshini murugan
 
Best Apple IOS Training in Chennai | Best Iphone Training in Chennai
Best Apple IOS Training in Chennai | Best Iphone Training in ChennaiBest Apple IOS Training in Chennai | Best Iphone Training in Chennai
Best Apple IOS Training in Chennai | Best Iphone Training in Chennai
Core Mind
 
How Xamarin Is Revolutionizing Mobile Development
How Xamarin Is Revolutionizing Mobile DevelopmentHow Xamarin Is Revolutionizing Mobile Development
How Xamarin Is Revolutionizing Mobile Development
MentorMate
 
Xamarin Best Cross Platform Mobile App Development Solution
Xamarin Best Cross Platform Mobile App Development SolutionXamarin Best Cross Platform Mobile App Development Solution
Xamarin Best Cross Platform Mobile App Development Solution
Ramin mohmaad hoseini
 
ios app development
ios app developmentios app development
ios app development
Rapidsoft Technologies
 
VSTO + LOB Apps Information Matters
VSTO + LOB Apps Information MattersVSTO + LOB Apps Information Matters
VSTO + LOB Apps Information Matters
Comunidade NetPonto
 
Ryerson DMZ iOS Development Workshop
Ryerson DMZ iOS Development WorkshopRyerson DMZ iOS Development Workshop
Ryerson DMZ iOS Development Workshop
Jean-Luc David
 
Visual Studio Software architecture
Visual Studio Software architectureVisual Studio Software architecture
Visual Studio Software architecture
Suphiyaan Sutar
 
Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4
Xamarin
 
Building Your First Xamarin.Forms App
Building Your First Xamarin.Forms AppBuilding Your First Xamarin.Forms App
Building Your First Xamarin.Forms App
Xamarin
 
A Better Interface Builder Experience
A Better Interface Builder ExperienceA Better Interface Builder Experience
A Better Interface Builder Experience
Justin Munger
 
Visual studio professional 2015 overview
Visual studio professional 2015 overviewVisual studio professional 2015 overview
Visual studio professional 2015 overview
Lee Stott
 
What is Visual Studio Code?
What is Visual Studio Code?What is Visual Studio Code?
What is Visual Studio Code?
Mindfire LLC
 
iOS Distribution and App store pushing and more
iOS Distribution and App store pushing and moreiOS Distribution and App store pushing and more
iOS Distribution and App store pushing and more
Naga Harish M
 
Best Interactive guide on Top 10 Mobile App Development Frameworks
Best Interactive guide on Top 10 Mobile App Development FrameworksBest Interactive guide on Top 10 Mobile App Development Frameworks
Best Interactive guide on Top 10 Mobile App Development Frameworks
varshasolanki7
 
Best Apple IOS Training in Chennai | Best Iphone Training in Chennai
Best Apple IOS Training in Chennai | Best Iphone Training in ChennaiBest Apple IOS Training in Chennai | Best Iphone Training in Chennai
Best Apple IOS Training in Chennai | Best Iphone Training in Chennai
Core Mind
 
How Xamarin Is Revolutionizing Mobile Development
How Xamarin Is Revolutionizing Mobile DevelopmentHow Xamarin Is Revolutionizing Mobile Development
How Xamarin Is Revolutionizing Mobile Development
MentorMate
 
Xamarin Best Cross Platform Mobile App Development Solution
Xamarin Best Cross Platform Mobile App Development SolutionXamarin Best Cross Platform Mobile App Development Solution
Xamarin Best Cross Platform Mobile App Development Solution
Ramin mohmaad hoseini
 
VSTO + LOB Apps Information Matters
VSTO + LOB Apps Information MattersVSTO + LOB Apps Information Matters
VSTO + LOB Apps Information Matters
Comunidade NetPonto
 
Ryerson DMZ iOS Development Workshop
Ryerson DMZ iOS Development WorkshopRyerson DMZ iOS Development Workshop
Ryerson DMZ iOS Development Workshop
Jean-Luc David
 
Visual Studio Software architecture
Visual Studio Software architectureVisual Studio Software architecture
Visual Studio Software architecture
Suphiyaan Sutar
 
Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4
Xamarin
 

Viewers also liked (7)

SwitchOn! Vol.1 WebDesign
SwitchOn! Vol.1 WebDesignSwitchOn! Vol.1 WebDesign
SwitchOn! Vol.1 WebDesign
kazuko kaneuchi
 
Tipografia Cicero Giovany - Paulo Czar
Tipografia   Cicero Giovany - Paulo CzarTipografia   Cicero Giovany - Paulo Czar
Tipografia Cicero Giovany - Paulo Czar
Giovany Junior
 
Wide Open Faces
Wide Open FacesWide Open Faces
Wide Open Faces
Garrick van Buren
 
Font type identification of hindi printed document
Font type identification of hindi printed documentFont type identification of hindi printed document
Font type identification of hindi printed document
eSAT Journals
 
Locate your hacks
Locate your hacksLocate your hacks
Locate your hacks
threepointone
 
Object Oriented Programming in js
Object Oriented Programming in jsObject Oriented Programming in js
Object Oriented Programming in js
threepointone
 
the rabbit and the tortoise
the rabbit and the tortoisethe rabbit and the tortoise
the rabbit and the tortoise
threepointone
 
SwitchOn! Vol.1 WebDesign
SwitchOn! Vol.1 WebDesignSwitchOn! Vol.1 WebDesign
SwitchOn! Vol.1 WebDesign
kazuko kaneuchi
 
Tipografia Cicero Giovany - Paulo Czar
Tipografia   Cicero Giovany - Paulo CzarTipografia   Cicero Giovany - Paulo Czar
Tipografia Cicero Giovany - Paulo Czar
Giovany Junior
 
Font type identification of hindi printed document
Font type identification of hindi printed documentFont type identification of hindi printed document
Font type identification of hindi printed document
eSAT Journals
 
Object Oriented Programming in js
Object Oriented Programming in jsObject Oriented Programming in js
Object Oriented Programming in js
threepointone
 
the rabbit and the tortoise
the rabbit and the tortoisethe rabbit and the tortoise
the rabbit and the tortoise
threepointone
 
Ad

Similar to How to add Custom Font to your iOS-based App? (20)

Ios
IosIos
Ios
abiramimaya
 
04 objective-c session 4
04  objective-c session 404  objective-c session 4
04 objective-c session 4
Amr Elghadban (AmrAngry)
 
BadesahebKBichu
BadesahebKBichuBadesahebKBichu
BadesahebKBichu
Badesaheb Bichu
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
Naga Harish M
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
YASH Technologies
 
Overview
OverviewOverview
Overview
ALOK RAJ
 
Google MLkit
Google MLkitGoogle MLkit
Google MLkit
Navin Manaswi
 
How to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using PythonHow to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using Python
Andolasoft Inc
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by Citytech
Ritwik Das
 
Dot NET Core Interview Questions PDF By ScholarHat
Dot NET Core Interview Questions PDF By ScholarHatDot NET Core Interview Questions PDF By ScholarHat
Dot NET Core Interview Questions PDF By ScholarHat
Scholarhat
 
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdfA Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
flufftailshop
 
Navya_Resume_New (1)
Navya_Resume_New (1)Navya_Resume_New (1)
Navya_Resume_New (1)
Navya MP
 
Kumar kunal
Kumar kunalKumar kunal
Kumar kunal
kumar kunal
 
.Net @ Neev
.Net @ Neev.Net @ Neev
.Net @ Neev
Neev Technologies
 
A Deep Dive into Android App Development 2.0.pdf
A Deep Dive into Android App Development 2.0.pdfA Deep Dive into Android App Development 2.0.pdf
A Deep Dive into Android App Development 2.0.pdf
lubnayasminsebl
 
Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon Session
Smile I.T is open
 
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffffPROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
VAIBHAVSAHU55
 
Introducing J2ME Polish
Introducing J2ME PolishIntroducing J2ME Polish
Introducing J2ME Polish
Adam Cohen-Rose
 
iOS-iPhone documentation
iOS-iPhone documentationiOS-iPhone documentation
iOS-iPhone documentation
Raj Dubey
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
Naga Harish M
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
YASH Technologies
 
How to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using PythonHow to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using Python
Andolasoft Inc
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by Citytech
Ritwik Das
 
Dot NET Core Interview Questions PDF By ScholarHat
Dot NET Core Interview Questions PDF By ScholarHatDot NET Core Interview Questions PDF By ScholarHat
Dot NET Core Interview Questions PDF By ScholarHat
Scholarhat
 
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdfA Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
A Comprehensive Guide to Efficiently Writing and Implementing iOS Unit Tests.pdf
flufftailshop
 
Navya_Resume_New (1)
Navya_Resume_New (1)Navya_Resume_New (1)
Navya_Resume_New (1)
Navya MP
 
A Deep Dive into Android App Development 2.0.pdf
A Deep Dive into Android App Development 2.0.pdfA Deep Dive into Android App Development 2.0.pdf
A Deep Dive into Android App Development 2.0.pdf
lubnayasminsebl
 
Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon Session
Smile I.T is open
 
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffffPROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
PROJECT-II_by_vk.pptxfffffffffffffffffffffffffffff
VAIBHAVSAHU55
 
iOS-iPhone documentation
iOS-iPhone documentationiOS-iPhone documentation
iOS-iPhone documentation
Raj Dubey
 
Ad

More from Neev Technologies (20)

Razorfish India (Neev) Corporate Profile
Razorfish India (Neev) Corporate ProfileRazorfish India (Neev) Corporate Profile
Razorfish India (Neev) Corporate Profile
Neev Technologies
 
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ NeevAdobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Neev Technologies
 
Hybris Hackathon - Split Payments in Hybris
Hybris Hackathon - Split Payments in HybrisHybris Hackathon - Split Payments in Hybris
Hybris Hackathon - Split Payments in Hybris
Neev Technologies
 
Hybris Hackathon - Data Modeling
Hybris Hackathon - Data ModelingHybris Hackathon - Data Modeling
Hybris Hackathon - Data Modeling
Neev Technologies
 
RazorfishNeev Engagement Process
RazorfishNeev Engagement ProcessRazorfishNeev Engagement Process
RazorfishNeev Engagement Process
Neev Technologies
 
Gameathon @ Neev
Gameathon @ NeevGameathon @ Neev
Gameathon @ Neev
Neev Technologies
 
Building A Jewelry e-store - Now, sell your jewelry to the world!
Building A Jewelry e-store - Now, sell your jewelry to the world!Building A Jewelry e-store - Now, sell your jewelry to the world!
Building A Jewelry e-store - Now, sell your jewelry to the world!
Neev Technologies
 
Neev Load Testing Services
Neev Load Testing ServicesNeev Load Testing Services
Neev Load Testing Services
Neev Technologies
 
Our Experience on Google Map Integration with Apps
Our Experience on Google Map Integration with AppsOur Experience on Google Map Integration with Apps
Our Experience on Google Map Integration with Apps
Neev Technologies
 
Neev Application Performance Management Services
Neev Application Performance Management ServicesNeev Application Performance Management Services
Neev Application Performance Management Services
Neev Technologies
 
Drupal Capabilities @ Neev
Drupal Capabilities @ NeevDrupal Capabilities @ Neev
Drupal Capabilities @ Neev
Neev Technologies
 
Neev CakePHP Managed Services Offerings
Neev CakePHP Managed Services OfferingsNeev CakePHP Managed Services Offerings
Neev CakePHP Managed Services Offerings
Neev Technologies
 
Neev AngularJS Capabilities
Neev AngularJS CapabilitiesNeev AngularJS Capabilities
Neev AngularJS Capabilities
Neev Technologies
 
Mobile Responsive Design @ Neev
Mobile Responsive Design @ NeevMobile Responsive Design @ Neev
Mobile Responsive Design @ Neev
Neev Technologies
 
Business Intelligence Capabilities @ Neev
Business Intelligence Capabilities @ NeevBusiness Intelligence Capabilities @ Neev
Business Intelligence Capabilities @ Neev
Neev Technologies
 
Neev Conversion Strategy Capabilities
Neev Conversion Strategy CapabilitiesNeev Conversion Strategy Capabilities
Neev Conversion Strategy Capabilities
Neev Technologies
 
RazorfishNeev - An Overview
RazorfishNeev - An OverviewRazorfishNeev - An Overview
RazorfishNeev - An Overview
Neev Technologies
 
A Digital Mirror for Luxury Jewelry Stores
A Digital Mirror for Luxury Jewelry StoresA Digital Mirror for Luxury Jewelry Stores
A Digital Mirror for Luxury Jewelry Stores
Neev Technologies
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
Neev Technologies
 
Native Mobile Platforms vs Phonegap – A Comparison
Native Mobile Platforms vs Phonegap – A ComparisonNative Mobile Platforms vs Phonegap – A Comparison
Native Mobile Platforms vs Phonegap – A Comparison
Neev Technologies
 
Razorfish India (Neev) Corporate Profile
Razorfish India (Neev) Corporate ProfileRazorfish India (Neev) Corporate Profile
Razorfish India (Neev) Corporate Profile
Neev Technologies
 
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ NeevAdobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Neev Technologies
 
Hybris Hackathon - Split Payments in Hybris
Hybris Hackathon - Split Payments in HybrisHybris Hackathon - Split Payments in Hybris
Hybris Hackathon - Split Payments in Hybris
Neev Technologies
 
Hybris Hackathon - Data Modeling
Hybris Hackathon - Data ModelingHybris Hackathon - Data Modeling
Hybris Hackathon - Data Modeling
Neev Technologies
 
RazorfishNeev Engagement Process
RazorfishNeev Engagement ProcessRazorfishNeev Engagement Process
RazorfishNeev Engagement Process
Neev Technologies
 
Building A Jewelry e-store - Now, sell your jewelry to the world!
Building A Jewelry e-store - Now, sell your jewelry to the world!Building A Jewelry e-store - Now, sell your jewelry to the world!
Building A Jewelry e-store - Now, sell your jewelry to the world!
Neev Technologies
 
Our Experience on Google Map Integration with Apps
Our Experience on Google Map Integration with AppsOur Experience on Google Map Integration with Apps
Our Experience on Google Map Integration with Apps
Neev Technologies
 
Neev Application Performance Management Services
Neev Application Performance Management ServicesNeev Application Performance Management Services
Neev Application Performance Management Services
Neev Technologies
 
Neev CakePHP Managed Services Offerings
Neev CakePHP Managed Services OfferingsNeev CakePHP Managed Services Offerings
Neev CakePHP Managed Services Offerings
Neev Technologies
 
Mobile Responsive Design @ Neev
Mobile Responsive Design @ NeevMobile Responsive Design @ Neev
Mobile Responsive Design @ Neev
Neev Technologies
 
Business Intelligence Capabilities @ Neev
Business Intelligence Capabilities @ NeevBusiness Intelligence Capabilities @ Neev
Business Intelligence Capabilities @ Neev
Neev Technologies
 
Neev Conversion Strategy Capabilities
Neev Conversion Strategy CapabilitiesNeev Conversion Strategy Capabilities
Neev Conversion Strategy Capabilities
Neev Technologies
 
A Digital Mirror for Luxury Jewelry Stores
A Digital Mirror for Luxury Jewelry StoresA Digital Mirror for Luxury Jewelry Stores
A Digital Mirror for Luxury Jewelry Stores
Neev Technologies
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
Neev Technologies
 
Native Mobile Platforms vs Phonegap – A Comparison
Native Mobile Platforms vs Phonegap – A ComparisonNative Mobile Platforms vs Phonegap – A Comparison
Native Mobile Platforms vs Phonegap – A Comparison
Neev Technologies
 

Recently uploaded (20)

Webinar - Top 5 Backup Mistakes MSPs and Businesses Make .pptx
Webinar - Top 5 Backup Mistakes MSPs and Businesses Make   .pptxWebinar - Top 5 Backup Mistakes MSPs and Businesses Make   .pptx
Webinar - Top 5 Backup Mistakes MSPs and Businesses Make .pptx
MSP360
 
Viam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdfViam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdf
camilalamoratta
 
GyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
GyrusAI - Broadcasting & Streaming Applications Driven by AI and MLGyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
GyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
Gyrus AI
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Make GenAI investments go further with the Dell AI Factory
Make GenAI investments go further with the Dell AI FactoryMake GenAI investments go further with the Dell AI Factory
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
fennec fox optimization algorithm for optimal solution
fennec fox optimization algorithm for optimal solutionfennec fox optimization algorithm for optimal solution
fennec fox optimization algorithm for optimal solution
shallal2
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
TrsLabs - Leverage the Power of UPI Payments
TrsLabs - Leverage the Power of UPI PaymentsTrsLabs - Leverage the Power of UPI Payments
TrsLabs - Leverage the Power of UPI Payments
Trs Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Vibe Coding_ Develop a web application using AI (1).pdf
Vibe Coding_ Develop a web application using AI (1).pdfVibe Coding_ Develop a web application using AI (1).pdf
Vibe Coding_ Develop a web application using AI (1).pdf
Baiju Muthukadan
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
UiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer OpportunitiesUiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer Opportunities
DianaGray10
 
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Raffi Khatchadourian
 
UiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer OpportunitiesUiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer Opportunities
DianaGray10
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 
Webinar - Top 5 Backup Mistakes MSPs and Businesses Make .pptx
Webinar - Top 5 Backup Mistakes MSPs and Businesses Make   .pptxWebinar - Top 5 Backup Mistakes MSPs and Businesses Make   .pptx
Webinar - Top 5 Backup Mistakes MSPs and Businesses Make .pptx
MSP360
 
Viam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdfViam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdf
camilalamoratta
 
GyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
GyrusAI - Broadcasting & Streaming Applications Driven by AI and MLGyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
GyrusAI - Broadcasting & Streaming Applications Driven by AI and ML
Gyrus AI
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Make GenAI investments go further with the Dell AI Factory
Make GenAI investments go further with the Dell AI FactoryMake GenAI investments go further with the Dell AI Factory
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
fennec fox optimization algorithm for optimal solution
fennec fox optimization algorithm for optimal solutionfennec fox optimization algorithm for optimal solution
fennec fox optimization algorithm for optimal solution
shallal2
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
TrsLabs - Leverage the Power of UPI Payments
TrsLabs - Leverage the Power of UPI PaymentsTrsLabs - Leverage the Power of UPI Payments
TrsLabs - Leverage the Power of UPI Payments
Trs Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Vibe Coding_ Develop a web application using AI (1).pdf
Vibe Coding_ Develop a web application using AI (1).pdfVibe Coding_ Develop a web application using AI (1).pdf
Vibe Coding_ Develop a web application using AI (1).pdf
Baiju Muthukadan
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
UiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer OpportunitiesUiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer Opportunities
DianaGray10
 
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Hybridize Functions: A Tool for Automatically Refactoring Imperative Deep Lea...
Raffi Khatchadourian
 
UiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer OpportunitiesUiPath Agentic Automation: Community Developer Opportunities
UiPath Agentic Automation: Community Developer Opportunities
DianaGray10
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 

How to add Custom Font to your iOS-based App?

  • 1. How to add Custom Font to your iOS-based App?
  • 2. About Neev Magento Hybris Commerce SaaS Applications Adobe Marketing Cloud Custom Development Key Company Highlights 300+ team with experience in managing offshore, distributed development. Neev Technologies established in Jan ’05 VC Funding in 2009 By Basil Partners Part of Publicis Groupe Hybris and Adobe CQ centers of Excellence Offices at Bangalore, Gurgaon, Pune, Mumbai Member of NASSCOM Mobile Cloud iPhone Android PhoneGap Windows Phone HTML5 Apps Web AWS Rackspace Joyent Heroku Google Cloud Platform Digital Marketing, CRM, Analytics (Omni-Channel) User Interface Design and User Experience Design Performance Consulting Practices Quality Assurance & Testing Outsourced Product Development Click here to know more about us
  • 3. Reusability of code – The Need • Neev follows the best coding practices to provide the highest quality software. • Reusability helps easily maintain an application. • If the application code is maintainable, then it is more flexible for new and challenging requirements. • In iOS-based Apps, custom fonts can be used in the many places. So, instead of copying the code repetitively, a better approach is to reuse. • iOS, Apple’s mobile operating system, doesn’t support all fonts. Thus, in order to use a custom font, we would need to include that custom font in the project we work on.
  • 4. How to include Custom Font in an iOS App? 1) Add the Custom font required by the application under folder named ‘Fonts’
  • 5. How to include Custom Font in a Project? 2) Add the name of the custom font in ‘.plist’ file with the key “Fonts provided by application” as in the below image.
  • 6. How to include Custom Font in a Project? 3) Check whether the custom font is appearing in the Target -> build phases –> copy bundle resources.
  • 7. How can we implement a custom font in an iOS App? 1) Create the class ‘NVLabel’ as a subclass of ‘UILabel’ as shown below. 2) Add the below code in NVLabel.h file #import <UIKit/UIKit.h> @interface NVLabel : UILabel // NV font is used for automatically setting font and other look and feel // properties of UILabels // Usage: in XIB add a keyValue with key “NVFont” and value “_tile_headerSub_” // refer to util class for more details on values. @property (nonatomic, strong) NSString *NVFont; @end1
  • 8. How can we implement a custom font in an iOS App? 3) Add the below code in the NVLabel.m file { self.NVFont = value; [FontUtil decorate:self]; } } // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end #import “NVLabel.h” #import “FontUtil.h” @implementation NVLabel @synthesize NVFont; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } -(void) setValue:(id)value forKey:(NSString *)key { if ([key isEqualToString:@"NVFont"])
  • 9. How can we implement a custom font in an iOS App? 4) Create the class FontUtils.h and FontUtils.m // FontUtil.h #import <Foundation/Foundation.h> #import “NVLabel.h” @interface FontUtil : NSObject + (void)decorate:(NVLabel *)label; +(void)decorateView:(UIView *)view; +(UIFont*)robotoCondensedWithSize:(int)size; +(UIFont*)robotoRegularWithSize:(int)size; @end
  • 10. How can we implement a custom font in an iOS App? 5) In the class FontUtils.m, add the following code. NSString *font = label.NVFont; if (font == nil) { return; } // more specific conditions must be checked before generic ones. // Ex: _af_tile_header_ must be checked before _tile_header_ which in turn must be checked before _header_ if ([font hasSuffix:@"_title_Mac_"]){ label.font = [FontUtil robotoItalicWithSize:16]; label.textColor = [UIColor greenColor]; } else if ([font hasSuffix:@"_title_name_2"]){ label.font = [FontUtil robotoCondensedWithSize:18]; label.textColor = [UIColor redColor]; }else if ([font hasSuffix:@"title_sub_3"]){ label.font = [FontUtil robotoCondensedWithSize:14]; // FontUtil.m #import “FontUtil.h” #include <objc/runtime.h> #include “NVLabel.h” @implementation FontUtil +(UIFont*)robotoCondensedWithSize:(int)size{ UIFont *font = [UIFont fontWithName:@"Roboto- Condensed" size:size]; return font; } +(UIFont*)robotoItalicWithSize:(int)size{ UIFont *font = [UIFont fontWithName:@"Roboto- Italic" size:size]; return font; } +(void)decorate:(NVLabel *)label { label.textColor = [UIColor brownColor]; } } +(void)decorateView:(UIView *)view { NSArray *subviews = [view subviews]; for (int i = 0; i < subviews.count; ++i) { UIView *subview = [subviews objectAtIndex:i]; if ([subview isKindOfClass:[NVLabel class]]) { [FontUtil decorate:(NVLabel *)subview]; } else { [FontUtil decorateView:subview]; } } } @end
  • 11. How can we implement a custom font in an iOS App? 6) After addition of the above code to create the required set of files, go to view controller.xib . • Go to show identity inspector • Under Custom class, it should be a subclass of NVLabel • Below ‘User Defined Run-Time Attributes’, add the keypath as NVFont , font as String , Value of the string is in the below format _name_subname_
  • 12. How can we implement a custom font in an iOS App? 7) After adding the user defined attributes , go to FontUtils.m 8) In the method, add the following code: label.font = [FontUtil robotoItalicWithSize:16]; label.textColor = [UIColor greenColor]; } else if ([font hasSuffix:@"_title_name_2"]){ label.font = [FontUtil robotoCondensedWithSize:18]; label.textColor = [UIColor redColor]; }else if ([font hasSuffix:@"title_sub_3"]){ label.font = [FontUtil robotoCondensedWithSize:14]; label.textColor = [UIColor brownColor]; } } +(void)decorate:(NVLabel *)label { NSString *font = label.NVFont; if (font == nil) { return; } // TODO // more specific conditions must be checked before generic ones. // Ex: _af_tile_header_ must be checked before _tile_header_ which in turn must be checked before _header_ if ([font hasSuffix:@"_title_Mac_"]){
  • 13. How can we implement a custom font in an iOS App? 9) In the above code, in if ([font hasSuffix:@"_title_Mac_"]), replace “title Mac” with the value of the string as given in the user defined attributes as in if([font hasSuffix:@”Value given in the user defined attributes”]) 10)Include FontUtil.h in your class. In the ‘viewdidload’ method, call the [FontUtil decorateView:self.view]
  • 14. Final Word • These steps can be used to add any number of custom fonts to an iOS App. • This method can be used for any iOS-based App that requires a custom font to be added to it. • Once the above steps are completed, iOS would allow the App to use the custom font. • To know more about our iOS application development capabilities, visit us here.
  • 15. The Neev Edge • End-to-end consultative approach for software solutions through needs assessment, process consulting and strategic advice. • Internal QMS are ISO 9001-2008 certified and CMM level 3 compliant. • Continuous process and service level improvements through deployment of best-of-breed processes and technologies. • International Standards and best practices on Project Management including PMI, ISO and Prince-2. • Proven EDC Model of delivery to provide predictable results. • Scrum based Agile development methodology.
  • 18. Neev Information Technologies Pvt. Ltd. [email protected] India - Bangalore The Estate, # 121,6th Floor, Dickenson Road Bangalore-560042 Phone :+91 80 25594416 India - Pune Office No. 4 & 5, 2nd floor, L-Square, Plot No. 8, Sanghvi Nagar, Aundh, Pune - 411007. Phone :+91 20 64103338 For more info on our offerings, visit www.neevtech.com