SlideShare uma empresa Scribd logo
1 de 21
iOS Theming Engine
Ruotger Deecke,
eBay
Who am I
Ruotger Deecke
10 years experience developing for Cocoa on OS X and iOS.
Working in Berlin, Germany for eBay Classifieds.
My team is based in Portland/OR, USA
Our challenge
We build 10
classifieds apps for 9
countries from one
code base.
Our challenge
They all look different!
Our challenge
- Redesign for iOS 7
Redesign: Style guide
Have your designer create a styleguide! Why?
- Makes implementation a lot easier
- A good document to discuss matters
- Helps you and your designer focus
- A good exercise in discipline
Creating the style guide
- Colors
- Typography
- Functional styles
Designing a theme
Old theming engine
Problems:
-Complicated One-Size-Fits-All solution for iOS 4
-Many dependencies all over the whole project
-Uses plist files to store theming information
-General code quality ...
„leaves room for improvement“
New theming engine needed
New theming engine
Design goals:
- Reasonably simple
- Flexible enough to accomodate for changing needs
- All theme information in code
- Capture as many patterns as possible
„Make it as simple as possible
but no simpler!“
- Albert Einstein
New theming engine
Three areas of responsibility:
- Encapsulating the theme information.
- Applying the theme with UIAppearance
- Odds and ends that UIAppearance cannot do for us.
Encapsulating the information
- Some things are the same in every app
- Some things are the same in every Gumtree App or Kijiji App
- Some things are specific one single App.
Inheritance!
Encapsulating the information
Base
KijijiGumtree
TWCAAUUK
Three Levels of Indirection
And iOS 6 ...?
Base
KijijiGumtree
TWCAAUUK
Base6
Kijiji6Gumtree6
TW6CA6AU6UK6
Theme Overlay:
UIAppearance
- Introduced by Apple with iOS 5
- Useful since iOS 6
- Still very useful on iOS 7
UIAppearance
- Get a UIAppearanceProxy for a class:
UIView *appearanceProxy = UIView.appearance;
- Apply theming information once to a UIAppearance proxy
appearanceProxy.backgroundColor = UIColor.redColor;
- After that Cocoa will create new UI elements already themed
UIAppearance
- There are some things UIAppearance can‘t do.
- For example: setting a text style to a button.
- But you can write your own UI_APPEARANCE_SELECTOR
Read up on it:
- Apple Docs
- http://nshipster.com/uiappearance
Lessons we learned
- don‘t underestimate the amount of theme information that an
app has.
- Your design will change many times
- In design there are no hard rules but merely patterns
- Work closely with your designer.
- Try to come up with the simplest solution that works for you.
Links
What other people have done:
-NUI (https://github.com/tombenner/nui),
-NativeCss (http://nativecss.com/),
-Classy (http://classy.as/),
-UISS (https://github.com/robertwijas/UISS),
-Slash (https://github.com/chrisdevereux/Slash),
NSHipster – UIAppearance:
-http://nshipster.com/uiappearance
Вопросы?
Ruotger Deecke,
eBay
rdeecke@ebay.com

Mais conteúdo relacionado

Semelhante a CodeFest 2014. Ruotger Deecke — iOS Theming Engine

iOS 7 UI Transition Guide
iOS 7 UI Transition GuideiOS 7 UI Transition Guide
iOS 7 UI Transition Guide
Evgeny Belyaev
 
Overcoming design challenges in HAT-based multichannel publishing
Overcoming design challenges in HAT-based multichannel publishingOvercoming design challenges in HAT-based multichannel publishing
Overcoming design challenges in HAT-based multichannel publishing
Jack Molisani
 
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
DEVCON
 

Semelhante a CodeFest 2014. Ruotger Deecke — iOS Theming Engine (20)

iOS App Development Presented by Edifyself
iOS App Development Presented by EdifyselfiOS App Development Presented by Edifyself
iOS App Development Presented by Edifyself
 
How to Create An iOS Application Development 9 Steps to Make It Happen
How to Create An iOS Application Development 9 Steps to Make It HappenHow to Create An iOS Application Development 9 Steps to Make It Happen
How to Create An iOS Application Development 9 Steps to Make It Happen
 
iOS 7 UI Transition Guide
iOS 7 UI Transition GuideiOS 7 UI Transition Guide
iOS 7 UI Transition Guide
 
7 Awesome Sources for learning iOS App Development
7 Awesome Sources for learning iOS App Development7 Awesome Sources for learning iOS App Development
7 Awesome Sources for learning iOS App Development
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
FirefoxOs App Development by Adam
FirefoxOs App Development by Adam FirefoxOs App Development by Adam
FirefoxOs App Development by Adam
 
iOS development made easy
iOS development made easyiOS development made easy
iOS development made easy
 
Overcoming design challenges in HAT-based multichannel publishing
Overcoming design challenges in HAT-based multichannel publishingOvercoming design challenges in HAT-based multichannel publishing
Overcoming design challenges in HAT-based multichannel publishing
 
Responsive Design with Axure 7.0’s Adaptive Views
Responsive Design with Axure 7.0’s Adaptive ViewsResponsive Design with Axure 7.0’s Adaptive Views
Responsive Design with Axure 7.0’s Adaptive Views
 
Becoming an IBM Connections Developer
Becoming an IBM Connections DeveloperBecoming an IBM Connections Developer
Becoming an IBM Connections Developer
 
Enterprise ipad Development with notes
Enterprise ipad Development with notesEnterprise ipad Development with notes
Enterprise ipad Development with notes
 
Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1
 
Ios-training-institute-in-mumbai
Ios-training-institute-in-mumbaiIos-training-institute-in-mumbai
Ios-training-institute-in-mumbai
 
Ios-training-institute-in-mumbai
Ios-training-institute-in-mumbaiIos-training-institute-in-mumbai
Ios-training-institute-in-mumbai
 
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
 
iOS Application Development Step by Step to develop an iOS App.pdf
iOS Application Development Step by Step to develop an iOS App.pdfiOS Application Development Step by Step to develop an iOS App.pdf
iOS Application Development Step by Step to develop an iOS App.pdf
 
Session 1 - Introduction to iOS 7 and SDK
Session 1 -  Introduction to iOS 7 and SDKSession 1 -  Introduction to iOS 7 and SDK
Session 1 - Introduction to iOS 7 and SDK
 
Intro to programming and how to start that career
Intro to programming and how to start that careerIntro to programming and how to start that career
Intro to programming and how to start that career
 
Computer project work
Computer project workComputer project work
Computer project work
 

Mais de CodeFest

Mais de CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

Último

一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
ayvbos
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
ydyuyu
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
ydyuyu
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Monica Sydney
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
Asmae Rabhi
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Monica Sydney
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
 

Último (20)

一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 

CodeFest 2014. Ruotger Deecke — iOS Theming Engine

  • 2. Who am I Ruotger Deecke 10 years experience developing for Cocoa on OS X and iOS. Working in Berlin, Germany for eBay Classifieds. My team is based in Portland/OR, USA
  • 3. Our challenge We build 10 classifieds apps for 9 countries from one code base.
  • 4. Our challenge They all look different!
  • 6. Redesign: Style guide Have your designer create a styleguide! Why? - Makes implementation a lot easier - A good document to discuss matters - Helps you and your designer focus - A good exercise in discipline
  • 7. Creating the style guide - Colors - Typography - Functional styles
  • 9. Old theming engine Problems: -Complicated One-Size-Fits-All solution for iOS 4 -Many dependencies all over the whole project -Uses plist files to store theming information -General code quality ... „leaves room for improvement“ New theming engine needed
  • 10. New theming engine Design goals: - Reasonably simple - Flexible enough to accomodate for changing needs - All theme information in code - Capture as many patterns as possible „Make it as simple as possible but no simpler!“ - Albert Einstein
  • 11. New theming engine Three areas of responsibility: - Encapsulating the theme information. - Applying the theme with UIAppearance - Odds and ends that UIAppearance cannot do for us.
  • 12. Encapsulating the information - Some things are the same in every app - Some things are the same in every Gumtree App or Kijiji App - Some things are specific one single App. Inheritance!
  • 14. Three Levels of Indirection
  • 15. And iOS 6 ...? Base KijijiGumtree TWCAAUUK Base6 Kijiji6Gumtree6 TW6CA6AU6UK6 Theme Overlay:
  • 16. UIAppearance - Introduced by Apple with iOS 5 - Useful since iOS 6 - Still very useful on iOS 7
  • 17. UIAppearance - Get a UIAppearanceProxy for a class: UIView *appearanceProxy = UIView.appearance; - Apply theming information once to a UIAppearance proxy appearanceProxy.backgroundColor = UIColor.redColor; - After that Cocoa will create new UI elements already themed
  • 18. UIAppearance - There are some things UIAppearance can‘t do. - For example: setting a text style to a button. - But you can write your own UI_APPEARANCE_SELECTOR Read up on it: - Apple Docs - http://nshipster.com/uiappearance
  • 19. Lessons we learned - don‘t underestimate the amount of theme information that an app has. - Your design will change many times - In design there are no hard rules but merely patterns - Work closely with your designer. - Try to come up with the simplest solution that works for you.
  • 20. Links What other people have done: -NUI (https://github.com/tombenner/nui), -NativeCss (http://nativecss.com/), -Classy (http://classy.as/), -UISS (https://github.com/robertwijas/UISS), -Slash (https://github.com/chrisdevereux/Slash), NSHipster – UIAppearance: -http://nshipster.com/uiappearance