{"id":5947,"date":"2014-11-30T19:28:52","date_gmt":"2014-12-01T03:28:52","guid":{"rendered":"http:\/\/www.podfeet.com\/blog\/?p=5947"},"modified":"2024-12-15T19:19:23","modified_gmt":"2024-12-16T03:19:23","slug":"499","status":"publish","type":"post","link":"https:\/\/www.podfeet.com\/blog\/2014\/11\/499\/","title":{"rendered":"#499 xkpasswd v2, If Every Day Were Christmas, Should I Sleep, Wrist Notfications, iOS Dev Tools for Screen Sizes"},"content":{"rendered":"<p>Send in your recordings for the 500th episode next week, if you&#8217;re doing holiday shopping at Amazon, please use the search box on podfeet.com to get us a little love.  Slau&#8217;s &#8220;If Every Day Were Christmas&#8221; is coming out on iTunes any minute now, watch my Twitter\/G+\/FaceBook accounts for the announcement when it goes live.  Bart&#8217;s secure, random and memorable password generator Version 2 has gone live at <a href=\"http:\/\/xkpasswd.net\" target=\"_blank\">xkpasswd.net<\/a>. <a href=\"https:\/\/itunes.apple.com\/us\/app\/should-i-sleep\/id560851219?mt=12\" target=\"_blank\">Should I Sleep<\/a> review from Leon Sargent. Why you do want notifications on your wrist. New sponsor &#8211; Hover at <a href=\"http:\/\/hover.com\" target=\"_blank\">Hover.com<\/a> listen to the show (or look at the sidebar) for a 10% off coupon code for new customers. Why you need to know how your VPN works. In Chit Chat Across the Pond, Donald Burr of <a href=\"http:\/\/otakunopodcast.com\" target=\"_blank\">Otaku no Podcast<\/a> teaches us how Apple&#8217;s development tools are helping developers deal with the plethora of screen sizes we have now.<\/p>\n<p><audio class=\"wp-audio-shortcode\" id=\"audio-5947-1\" preload=\"none\" style=\"width: 100%;\" controls=\"controls\"><source type=\"audio\/mpeg\" src=\"http:\/\/media.blubrry.com\/nosillacast\/traffic.libsyn.com\/nosillacast\/NC_2014_11_30.mp3?_=1\" \/><a href=\"http:\/\/media.blubrry.com\/nosillacast\/traffic.libsyn.com\/nosillacast\/NC_2014_11_30.mp3\">http:\/\/media.blubrry.com\/nosillacast\/traffic.libsyn.com\/nosillacast\/NC_2014_11_30.mp3<\/a><\/audio><br \/>\n<a href=\"http:\/\/phobos.apple.com\/WebObjects\/MZStore.woa\/wa\/viewPodcast?id=81677867\"><img loading=\"lazy\" decoding=\"async\" style=\"float: none;\" src=\"https:\/\/podfeet.com\/NosillaCast\/artwork\/itunes_subscribe_button.png\" alt=\"itunes\" width=\"125\" height=\"43\" \/><\/a><br \/>\n<a title=\"mp3 download\" href=\"http:\/\/media.blubrry.com\/nosillacast\/traffic.libsyn.com\/nosillacast\/NC_2014_11_30.mp3\" target=\"_blank\">mp3 download<\/a><\/p>\n<p><!--more--><br \/>\nHi this is Allison Sheridan of the NosillaCast Mac Podcast, hosted at Podfeet.com, a technology geek podcast with an EVER so slight Macintosh bias. Today is Sunday November 30, 2014 and this is show number 499.   We&#8217;re almost there guys, just one more week till we hit 500 episodes together!  This week Steve posted a letter to the NosillaCastaways in our Google Plus community and asked me to send out a letter to those subscribed to the NosillaCast News inviting you to send in any thoughts you&#8217;d like to share about the show in commemoration of this momentous event. I made a wee typo and said the 500th show was on December 6th, but it should have been December 7th (since that&#8217;s a Sunday).  If you&#8217;ve thought about sending in an audio recording in the past and never got around to it or if you&#8217;re a regular contributor, now might be a lovely time to send something in.  Heck, you could re-use the text and put it an iTunes review too!  Double the fun. <\/p>\n<p>As you dig into your holiday shopping, please consider using the Amazon search box on podfeet.com in the left sidebar. If you start your search there, anything you buy during that Amazon session will send a small percentage over to the show to help us cover costs. I really appreciate it, as it makes a huge difference in my ability to be able to afford to bring you the show each week.   And as always it doesn&#8217;t cost you a dime!<\/p>\n<h3>Correction<\/h3>\n<p>On Last week&#8217;s show, Bart and I talked about the insecurity of using a hotel computer, even to print out your boarding pass.  Both Rod Simmons and Bruce Wilson let us know that you can print your boarding pass out without actually logging in.  Evidently just using your confirmation number, the 6 digit record locator number, you can print your boarding pass.  Both Bruce and Rod travel a LOT and they avoid the hotel computer like the plague so they know what they&#8217;re talking about!  Thanks guys, I had no idea this would work.<\/p>\n<h3>Slau &#8211; If Every Day Were Christmas<\/h3>\n<p>Remember last week I told you how awesome it was to meet up with Slau and learn how he makes music by watching him mix audio real time?  The song he was preparing is called If Every Day Were Christmas, and it&#8217;s actually finished!  He has submitted it to CD Baby which feeds into the iTunes store, so it should be up in iTunes any minute now.  I want to encourage everyone go check it out and if you like it buy it.  Slau gave us a copy of the song and agreed that I could play you the first 30 seconds of it so let&#8217;s have a listen:<\/p>\n<p>insert 30 seconds<\/p>\n<p>Isn&#8217;t that beautiful?  I&#8217;ll be posting about it on Twitter and Google Plus and maybe even Facebook when it gets into iTunes so keep an eye out for that.<\/p>\n<h3>xkpasswd.net<\/h3>\n<p><a href=\"http:\/\/xkpasswd.net\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/xkpasswd_logo.png\" alt=\"xkpasswd_logo\" style=\"float: right; margin: 5px;\"\/><\/a>Ok, ONE more thing about last week&#8217;s show.  Bart had in the shownotes that he has finished the new version of his secure, memorable, and <em>typable<\/em> password generator over at <a href=\"https:\/\/xkpasswd.net\/s\/\" target=\"_blank\">https:\/\/xkpasswd.net\/s\/<\/a>.  We talked a lot a while back about how it works, and if you&#8217;re in the Google Plus community (at <a href=\"https:\/\/podfeet.com\/googleplus\">podfeet.com\/googleplus<\/a>) you even got to be a beta tester for the interface.  I have become a huge fan of this service, especially for those times where you have to type a password because you&#8217;re looking at it on the iPhone but you need to type it somewhere else.  Anyway, go check out all of the enhancements to how you pick the padding and separators and enjoy all the good math behind it.  Again, it&#8217;s at xkpasswd.net &#8211; and if you like it, push that donate button and throw Bart a little bit of love!<\/p>\n<p>Leon sent in a review last week but I had so much content I couldn&#8217;t squeeze it in, so let&#8217;s start out with his review now.<\/p>\n<h3>Leon Reviews Should I Sleep<\/h3>\n<p><a href=\"https:\/\/itunes.apple.com\/us\/app\/should-i-sleep\/id560851219?mt=12\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/shouldisleep.png\" alt=\"should I sleep logo in iTunes\" style=\"float: right; margin: 5px;\"\/><\/a>What problem does this application solve for me? <\/p>\n<p>Having energy saver set to 15 minutes for screen and 30 minutes for system sleep works fine while I am on the Mac and actively interacting with trackpad and keyboard.<\/p>\n<p>Where does this app come in handy?<\/p>\n<p>Lets say I am reading something on my Mac that pertains to fixing a problem on my iPad and I am switching my attention between the two.  I happen to look back at my Mac to continue reading and the screen is asleep or the Mac has gone to sleep.  Though not an earth shattering situation having to do this many times is ANNOYING.  Using the Face Detection Sensor checks for movement with the FaceTime camera and keeps the screen and Mac awake until there is no further movement and then lets energy saver pref take over.<\/p>\n<p>Other points:<\/p>\n<li>One of the sensors of Should I Sleep I use the most is Download Monitor, name is a little misleading as it monitors network activity in both directions. <\/li>\n<li>Ever had a download \/ upload stop because your energy saver prefs kicked on?<\/li>\n<li>You can set this sensor to a minimum kb to keep the Mac and screen out of sleep and when it drops below your setting energy saver then kicks in.<\/li>\n<li>This has been very useful for those long, long crash plan initial backup and my TimeMachine to Drobo backup.<\/li>\n<li>You can toggle a setting that allows the LCD to sleep but keep the computer awake if you just need CPU usage but you don\u2019t need to see what is happening.<\/li>\n<li>Support is excellent from the developers.<\/li>\n<p><a href=\"https:\/\/itunes.apple.com\/us\/app\/should-i-sleep\/id560851219?mt=12\" target=\"_blank\">Link to Should I Sleep in the Mac Appstore<\/a>.<\/p>\n<p>Price $1.99 included two sensors with additional sensors as in app purchases individually for .99 each or all sensors for $2.99.<br \/>\n==============================<\/p>\n<table border=\"0\" cellspacing=\"10\" align=\"right\">\n<tr>\n<td><iframe style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&#038;OneJS=1&#038;Operation=GetAdHtml&#038;MarketPlace=US&#038;source=ss&#038;ref=ss_til&#038;ad_type=product_link&#038;tracking_id=httppodfeecom-20&#038;marketplace=amazon&#038;region=US&#038;placement=B007JX8O0Y&#038;asins=B007JX8O0Y&#038;linkId=5ZTJPBUAXDNNAAG6&#038;show_border=true&#038;link_opens_in_new_window=true\"><br \/>\n<\/iframe><\/td>\n<\/tr>\n<\/table>\n<p>Well thanks Leon! Your audio sounds great and Should I Sleep sounds like a great application. I know a lot of people swear by Caffeine but it simply sleep or no sleep, which can only waste power if you forget to turn it off.  Should I Sleep sounds like exactly what we need in the Sheridan household.  By the way you mentioned your microphone, the Audio-Technica AT2005 USB microphone.  I&#8217;m a member of the Podcasting Technology Resources Google plus group and people in there are ALWAYS singing the praises of these Audio-Technica mics.  The cool part about the mic Leon bought is that it IS a USB mic so you can just plug it right into your Mac or PC, but it also has an XLR connection which means you can plug it into a big girl mixer if you ever grow into that.  The AT2005USB mic is only $50 so I put an Amazon link in the shownotes if anyone is in the market for a really good but inexpensive microphone.<\/p>\n<p>By the way, Leon, I gave up my mixer years ago.  The complexity vs. the audio quality for me was not worth all the trouble it gave me.  Fun from a geek&#8217;s perspective but a lot of work.  Thanks again Leon, hope you do more reviews for us now!<\/p>\n<h3>Blog Posts<\/h3>\n<h4><a href=\"https:\/\/www.podfeet.com\/blog\/2014\/11\/why-you-need-to-know-how-your-vpn-works\/\" title=\"Why You Need to Know How Your VPN Works\">Why You Do Want Notifications On Your Wrist<\/a><\/h4>\n<h4><a href=\"https:\/\/www.podfeet.com\/blog\/2014\/11\/why-you-need-to-know-how-your-vpn-works\/\" title=\"Why You Need to Know How Your VPN Works\">Why You Need to Know How Your VPN Works<\/a><\/h4>\n<h3>Hover<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/artwork\/hover_logo_coupon.png\" alt=\"hover_logo_coupon\" style=\"float: right; margin: 5px;\"\/>We have a new sponsor for the show, a company called Hover that sells domain names. You may be thinking, &#8220;why would someone need a domain name?&#8221; Want to start a photography site or a blog? You need a domain name for that. If you have a baby, you could buy them their own domain now so that when they grow up they&#8217;ll be all set. If you have an idea now for a product you might like to build later, you can buy the domain name now before it gets scooped up.  Domain names used to cost a fortune but now they&#8217;re really inexpensive so they&#8217;re just fun to collect!<\/p>\n<p>I bought podfeet.com from another company and later added nosillacast.com just in case people got confused on the name of the website they&#8217;d still find the content they wanted.  This other company sells domain names for super low prices, but the upsell that follows your initial request would make your eyes bleed.  They barrage you wit so many other offers, you just want to take a shower afterwards.  One of the dumbest things they offer, is that for extra money, they&#8217;ll keep your home address a secret!  Yes, you pay EXTRA for the service of privacy.  At Hover, you do not pay extra to stay private, the cost is built into the price.  <\/p>\n<p>A few months ago I decided to buy nozillacast.com, again because people get the name wrong.  I thought I&#8217;d give these Hover folks a try (and no, they weren&#8217;t sponsors when I decided to do this.)  I went to <a href=\"http:\/\/hover.com\" target=\"_blank\">hover.com<\/a>, typed in the address I wanted to buy, it was available, so I clicked buy\u2026and that was it. Entered my credit card info and I was done.  In the six months or so since then, I have not received a single email from them, not a peep of spam.  <\/p>\n<p>I&#8217;m really excited about working with Hover because over the next few weeks I&#8217;m going to actually MOVE all my domains from the other guys over to Hover. I&#8217;ll let you know how this works, whether their free concierge service (I call it hand holding) works or not. I feel like I&#8217;m flying without a net of Bart helping me but if I&#8217;m going to recommend the service, I&#8217;d better use it myself first!  Wish me luck.<\/p>\n<p>In the mean time if you&#8217;re ready to pull the trigger on buying a domain name, please go to hover.com and when you go to buy, put in the coupon code XXXXXXXXX to receive 10% off for new customers on your domain name purchase.<\/p>\n<h3>Clarify<\/h3>\n<p>I sure hope you&#8217;re listening to this show on Monday because Clarify 2 is half off through Monday!  That means for $15 you can get a tool that makes you look like a doggone genius.  Go.  Right now, don&#8217;t delay.  Go over to <a href=\"http:\/\/clarify-it.com\">clarify-it.com<\/a> OR you can even get it half off through the <a href=\"https:\/\/itunes.apple.com\/us\/app\/clarify-2\/id867687197?mt=12\" target=\"_blank\">Mac App Store<\/a> if you&#8217;d like. If you buy through the website, you&#8217;ll have to listen to the show to get the coupon code!  This is an incredible deal.  I even bought a copy for Dorothy at this price as a reward for all of the cool scripting she does for us.  And because I wanted her to enjoy the new annotations options, numbered steps, substeps, combined images and more output options.  So if I&#8217;m willing to buy it (when you know they would have given me one for free), you can go get one too!  Let me know what you think of it when you make your first masterpiece!<\/p>\n<h3>Chit Chat Across the Pond &#8211; Time: 24:22<\/h3>\n<p>Donald Burr of Otaku No Podcast explains how Apple&#8217;s dev tools help developers deal with the plethora of screen sizes we have today.<\/p>\n<p><strong>First, some background information<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">There are two ways of creating a user interface for an app<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px;\">C<\/span><span style=\"font-size: 13px; line-height: 1.5em;\">reate it programmatically (in code).<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Create it graphically using a tool built into Xcode called Interface Builder.<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Design your interface graphically, and Xcode creates a file that encapsulates it<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">These files are called &#8220;XIBs&#8221; (XML Interface Builder, because they&#8217;re XML files)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Each &#8220;screen&#8221; of your app (technically called a &#8220;view controller&#8221;) gets its own XIB file<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Starting with iOS 5, you can now create &#8220;Storyboards&#8221; that are basically a single file that contains all your XIBs all in one file, instead of having each in its<\/span><span style=\"font-size: 13px; line-height: 1.5em;\"> own separate file<\/span><span style=\"font-size: 13px;\"> <\/span><span style=\"font-size: 13px; line-height: 1.5em;\">(there&#8217;s a bit more to it than that, this is just a simplification since we don&#8217;t need that much detail in today&#8217;s discussion)<\/span><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">These two are not mutually exclusive, you can mix and match.  And (of course) which one one should use is a hotly debated topic.<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">However, the challenges we are about to discuss apply regardless of whether you use XIBs or code to design your UI.<\/span><\/li>\n<p><strong><span style=\"font-size: 13px; line-height: 1.5em;\">The Original iPhone (and iPod touch)<\/span><\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Only one screen size to deal with (3.5 inches) but you had to deal with rotation<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">OS provides &#8220;springs and struts&#8221; (aka Auto Resizing Mask) a primitive system for telling the OS how you want your UI to change when screen orientation changes<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">lets you &#8220;stick&#8221; UI elements to a particular side of the screen<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">also lets you proportionally grow\/shrink UI elements as needed<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">can be set up graphically in Interface Builder, or through code (or both)<\/span><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">This works OK for simple cases, not very flexible though<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">If springs and struts aren&#8217;t good enough, you deal with rotation changes in code<\/span><\/li>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">OS notifies your app when a screen orientation change has occurred, and you explicitly move\/resize your UI in code as needed<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Offers the most flexibility, but at a high cost (lots of code to debug and maintain)<\/span><\/li>\n<\/ul>\n<li><span style=\"line-height: 1.5em;\">This is hard.  Between the primitive springs\/struts mechanism and the need to do a lot of UI layout in code (for all but the most basic UI&#8217;s) a lot of the early apps either <\/span><span style=\"line-height: 19.5px;\">handled rotation incorrectly, or not at all<\/span><span style=\"line-height: 1.5em;\"> <\/span><\/li>\n<p><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/01_SpringsAndStruts.png\" alt=\"diagram shoiwng springs that cause a UI element to proportionally resize itself\" style=\"margin: 5px;\"\/><\/p>\n<p><strong>Enter the iPad!<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Now we have not only a new screen size, but also a new &#8220;user interface idiom&#8221;<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">iPad supports different types of UI (because of the larger screen size) that the iPhone does not  (Example: Navigation Controller vs. Split View Controller, see below)<\/span><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Apple dealt with this in two ways<\/span><\/li>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">XIBs\/storyboards are now device-specific (i.e. one set for iPhone, and another for iPad)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">In code, you can query what type of device you&#8217;re running on, and do different things based on that information (i.e. put up a Nav Con vs. a Split View Con)<\/span><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">The problem is that this now introduces added complexity<\/span><\/li>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Two sets of XIBs\/storyboards to maintain<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Two different branches of code to maintain and debug<\/span><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">This is why many companies were slow to make their apps universal (and a surprising number of apps still aren&#8217;t universal even to this day)<\/span><\/li>\n<p><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/02A_iPadVsiPhoneViewControllers.png\" alt=\"Navigation vs. split view controller on iPhone vs iPad\" style=\"margin: 5px;\"\/><\/p>\n<p><strong>Enter the iPhone 5!<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">A whole new ball game, now we have three screen sizes.  The old springs and struts system is really not suited for this.<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Enter Auto Layout<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Debuted in OS X 10.7 Lion, came to iOS as of iOS 6<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">&#8220;Auto Layout is a constraint-based, descriptive layout system.&#8221;<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">It allows us to specify the way UI elements should be laid out with respect to each other<\/span><span style=\"font-size: 13px;\"> <\/span><span style=\"font-size: 13px; line-height: 1.5em;\">in the way we humans think about them<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">&#8220;Button A should always be centered horizontally in its superview.&#8221;<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">&#8220;Button A should be a fixed distance of X from the bottom of the superview.&#8221;<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">&#8220;Button A and Button B should be at least X spaced apart from each other.&#8221;<\/span><\/li>\n<\/ul>\n<li>These Auto Layout constraints can be created graphically in Interface Builder, or through code (and again, those are not mutually exclusive)<\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">The Auto Layout engine takes all your constraints and encapsulates them as a set of linear equations, which it then solves in real time to determine where to position the UI and how to size it, etc.<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Developers hated it at first because the tools were sub-par at first (Xcode 4.5), but Xcode 5 and (especially) Xcode 6 have made them A LOT better<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">It&#8217;ll still take you some time to wrap your head around it, but one day it&#8217;ll &#8220;click&#8221;<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Many good books and tutorials on the subject<\/span><\/li>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/03_NCAppAutoLayoutExample.png\" alt=\"NosillaCast app showing Xcode layout\" height=\"340\" width=\"350\" style=\"margin: 5px;\"\/><\/p>\n<p><strong>Enter the iPhone 6 and 6+!<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">We now have 6 different screen sizes (3.5, 4, 4.8, 5.5, 7.9, and 9.7 inches)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Auto Layout is still very helpful to handle all these screen sizes, but there are ways to improve it still<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Also we still have the problem of separate UI (Storyboards\/XIBs and\/or code) for iPhone and iPad, as well as different types of UI (popover and split view on the iPad)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Also, what if you want to add UI elements on bigger-screened phones (or remove certain UI elements for the smaller phones)?<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Apple pulled yet another rabbit out of its hat to help us with this &#8211; Size Classes!<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">No more separate Storyboards for iPhone and iPad, one storyboard to rule them all<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Storyboards now no longer show an iPhone sized screen; instead you get a square canvas<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Think of this as an abstraction (a &#8220;generic mobile device&#8221; instead of a specifically-sized iPhone or iPad) &#8211; you lay out your UI, and Auto Layout will take care of sizing it properly for whatever device your app runs on<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">But you may still want to change things (add\/remove\/change UI elements) based on screen size<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">For that Apple has introduced the concept of &#8220;size classes&#8221; (see table below)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">By default you are working in the &#8220;Width Any, Height Any&#8221; size class.  Lay out your UI, etc.<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">But if you need to override it for a particular class of device, you can!<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">This also means we no longer need to think about device rotation as a separate concept &#8211; when a device rotates, just think of it as changing its width and height size classes<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">They went even further with the introduction of Adaptive View Controllers<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">iPhone&#8217;s Navigation Controller and iPad&#8217;s Split View Controller are very similar (they both have a &#8220;master&#8221; and a &#8220;detail&#8221; side &#8211; it&#8217;s just that on the iPhone you can only have one on screen at a time)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Previously you had to check what &#8220;user interface idiom&#8221; you were on (iPad or iPhone) then put up a Nav Con or Split View depending on which = two separate code paths = more places to get things wrong\/introduce bugs<\/span><span style=\"font-size: 13px; line-height: 1.5em;\"> <\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Now all you have to do is just use a Split View Controller &#8211; if your app is running on an iPhone, the OS will automatically turn it into a Navigation Controller for you! (And if you&#8217;re running on an iPhone 6 Plus, which has plenty of real estate even when in landscape mode, it&#8217;ll go ahead and use a split view controller anyway!)<\/span><\/li>\n<\/ul>\n<table style=\"width: 50%; background-color: #97eeee; margin-left: auto; margin-right: auto; \" border=\"0\"; align=\"center\";>\n<tbody>\n<tr>\n<td style=\"background-color: #000000;\"> <\/td>\n<td style=\"background-color: #7897e6;\">Compact Width <\/td>\n<td style=\"background-color: #7897e6;\">Regular Width <\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: #7897e6;\">Compact Height <\/td>\n<td>iPhone 6 and earlier in landscape orientation<\/td>\n<td>iPhone 6 Plus in landscape orientation <\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: #7897e6;\">Regular Height <\/td>\n<td>All iPhones in portrait orientation <\/td>\n<td>All iPads in any orientation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><center>Table showing which size classes are used by various iOS devices<\/center><\/p>\n<p><a href=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/04_SizeClassExample1.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/04_SizeClassExample1_small.png\" alt=\"base user interface of a hypothetical contrived sample app\" style=\"border-width: 2px; border-style: solid; border-color: #0000ff; margin: 5px;\"\/><\/a><\/p>\n<p>Click to see larger image<\/p>\n<p><a href=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/05_SizeClassExample2.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/05_SizeClassExample2_small.png\" alt=\"changing size classes\" style=\"border-width: 2px; border-style: solid; border-color: #0000ff; margin: 5px;\"\/><\/a><\/p>\n<p>Click to see larger image<br \/>\n<a href=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/06_SizeClassExample3.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/06_SizeClassExample3_small.png\" alt=\"defining UI for compact height devices\" style=\"border-width: 2px; border-style: solid; border-color: #0000ff; margin: 5px;\"\/><\/a><\/p>\n<p>Click to see larger image<\/p>\n<p><strong><span style=\"font-size: 13px; line-height: 1.5em;\">The Apple Watch is coming!<\/span><\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Many people (myself included) assumed that they&#8217;d just use Auto Layout to handle the watch UI, it should work, right?<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Yeah, it would, but Apple took the KISS approach &#8211; with such a small screen, you don&#8217;t need a whole bunch of fancy constraint calculation maths<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">The way UI layout on the Apple Watch works is that the UI as a whole is organized either horizontally (things line up next to each other) or vertically (things are stacked on top of each other), and UI elements automatically &#8220;stick&#8221; to their neighbors (either horizontally or vertically.)<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">But what if you want both?  Well then you can add a Group.  Within a Group you can have the interface elements &#8220;stick&#8221; in a different orientation<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">With this simple system you can put together some remarkably good UI &#8211; perhaps not as complex as what you can do on an iPhone, but you don&#8217;t really want that level of complexity on a small watch screen anyway!<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">I think of it as &#8220;Auto Layout Lite&#8221;<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">I&#8217;m guessing Apple created this new system because the Apple Watch is going to have a less powerful processor in it (can&#8217;t do all the real-time maths that full-strength Auto Layout requires) <\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/podfeet.com\/NosillaCast\/NC_2014\/NC_2014_11_30\/07_WatchKitUILayoutDiagram.png\" alt=\"Watchkit layout showing vertical scroll and tables within tables\" style=\"margin: 5px;\"\/><br \/>\n(in the above picture, I have given each Group a different background color, so that you can easily tell them apart on screen.)<\/p>\n<p><strong>The future?<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">The system we have now is quite flexible and should last us a long time, and can always be extended\/modified\/tweaked if needed to accommodate new devices, screen sizes, etc.<\/span><\/li>\n<li><span style=\"line-height: 1.5em;\">Example: if the rumored 12&#8243; iPad Pro turns <\/span><span style=\"font-size: 13px; line-height: 1.5em;\">out to be real, it can still work as a &#8220;width regular, height regular&#8221; device like the current iPad, but maybe because you&#8217;ll have so much screen real estate on it, Apple can create a new size class that will let developers add more UI to it (say a &#8220;Large&#8221; size class?)<\/span><span style=\"line-height: 1.5em;\"> <\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">But Apple I&#8217;m sure are always looking out for ways to improve it&#8230; so who knows?<\/span><\/li>\n<\/ul>\n<p><strong>Interesting Links<\/strong><\/p>\n<p>Explaining the view hierarchy:<\/p>\n<p><a href=\"http:\/\/www.techotopia.com\/index.php\/Understanding_iPhone_iOS_4_Views,_Windows_and_the_View_Hierarchy\">http:\/\/www.techotopia.com\/index.php\/Understanding_iPhone_iOS_4_Views,_Windows_and_the_View_Hierarchy<\/a><\/p>\n<p>Springs and struts:<\/p>\n<p><a href=\"http:\/\/www.techotopia.com\/index.php\/IOS_5_iPhone_Rotation,_View_Resizing_and_Layout_Handling#Configuring_View_Autosizing\">http:\/\/www.techotopia.com\/index.php\/IOS_5_iPhone_Rotation,_View_Resizing_and_Layout_Handling#Configuring_View_Autosizing<\/a><\/p>\n<p><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"http:\/\/www.binpress.com\/tutorial\/learn-objectivec-rotation\/96\">http:\/\/www.binpress.com\/tutorial\/learn-objectivec-rotation\/96<\/a><\/p>\n<p><a href=\"http:\/\/www.techpaa.com\/2012\/05\/understanding-uiview-autoresizing.html\">http:\/\/www.techpaa.com\/2012\/05\/understanding-uiview-autoresizing.html<\/a><\/p>\n<p>Auto Layout:<\/p>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">WWDC sessions about Auto Layout:<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">WWDC 2012 Session 202, &#8220;Introduction to Auto Layout&#8221;<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Video: <\/span><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"https:\/\/developer.apple.com\/videos\/wwdc\/2012\/?id=202\">https:\/\/developer.apple.com\/videos\/wwdc\/2012\/?id=202<\/a><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Text transcript: <\/span><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"http:\/\/asciiwwdc.com\/2012\/sessions\/202\">http:\/\/asciiwwdc.com\/2012\/sessions\/202<\/a><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">WWDC 2012 Session 232, &#8220;Auto Layout by Example&#8221;<\/span><\/li>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Video: <\/span><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"https:\/\/developer.apple.com\/videos\/wwdc\/2012\/?id=232\">https:\/\/developer.apple.com\/videos\/wwdc\/2012\/?id=232<\/a><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Text transcript: <\/span><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"http:\/\/asciiwwdc.com\/2012\/sessions\/232\">http:\/\/asciiwwdc.com\/2012\/sessions\/232<\/a><\/li>\n<\/ul>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Beginning Auto Layout video &#8211; a great video that visually shows you how Auto Layout works, no programming knowledge is really needed: <a href=\"http:\/\/www.raywenderlich.com\/64392\/video-tutorial-beginning-auto-layout\">http:\/\/www.raywenderlich.com\/64392\/video-tutorial-beginning-auto-layout<\/a><\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Apple PDF about Auto Layout: <\/span><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/UserExperience\/Conceptual\/AutolayoutPG\/AutolayoutPG.pdf\">https:\/\/developer.apple.com\/library\/ios\/documentation\/UserExperience\/Conceptual\/AutolayoutPG\/AutolayoutPG.pdf<\/a><\/li>\n<li><span style=\"font-size: 13px; line-height: 1.5em;\">Cassowary and linear programming &#8211; the maths behind Auto Layout<\/span><\/li>\n<ul>\n<li><a style=\"font-size: 13px; line-height: 1.5em;\" href=\"http:\/\/constraints.cs.washington.edu\/cassowary\/\">http:\/\/constraints.cs.washington.edu\/cassowary\/<\/a><\/li>\n<li><a href=\"http:\/\/www.bignerdranch.com\/blog\/ios-autolayout-fun-facts-and-tips\/\">http:\/\/www.bignerdranch.com\/blog\/ios-autolayout-fun-facts-and-tips\/<\/a><\/li>\n<\/ul>\n<p>Size Classes:<\/p>\n<p><a href=\"http:\/\/www.imore.com\/adaptive-ui-ios-8-explained\">http:\/\/www.imore.com\/adaptive-ui-ios-8-explained<\/a><\/p>\n<p>Apple Watch:<\/p>\n<p><a href=\"http:\/\/www.raywenderlich.com\/89562\/watchkit-tutorial-with-swift-getting-started\">http:\/\/www.raywenderlich.com\/89562\/watchkit-tutorial-with-swift-getting-started<\/a><\/p>\n<p><strong>Some blatant self-promotion<\/strong> <\/p>\n<p>My website &#8211; <a href=\"http:\/\/DonaldBurr.com\/\">http:\/\/DonaldBurr.com\/<\/a><\/p>\n<p>My apps &#8211; <a href=\"http:\/\/DonaldBurr.com\/apps\/\">http:\/\/DonaldBurr.com\/apps\/<\/a><\/p>\n<p>The fine NosillaCast app &#8211; <a href=\"https:\/\/itunes.apple.com\/us\/app\/nosillacast\/id561466798?mt=8&amp;uo=4&amp;at=10lrq4\">https:\/\/itunes.apple.com\/us\/app\/nosillacast\/id561466798?mt=8&amp;uo=4&amp;at=10lrq4<\/a>  (new version currently in development &#8211; want to be a beta tester?  Contact me on my website or via Twitter)<\/p>\n<p>My Twitter &#8211; <a href=\"http:\/\/twitter.com\/dburr\">http:\/\/twitter.com\/dburr<\/a><\/p>\n<p>Otaku no Podcast &#8211; <a href=\"http:\/\/otakunopodcast.com\/\">http:\/\/otakunopodcast.com\/<\/a><\/p>\n<p>That&#8217;s going to wind this up for this week, many thanks to our sponsor for helping to pay the bills, the makers of Clarify over at <a href=\"clarify-it.com\">clarify-it.com<\/a> and Hover for all your domain name needs over at <a href=\"http:\/\/hover.com\" target=\"_blank\">hover.com<\/a>. Don&#8217;t forget to send in your Dumb Questions, comments and suggestions and recordings for the 500th show by emailing me at <a href=\"mailto:allison@podfeet.com\">allison@podfeet.com<\/a>, follow me on <a href=\"http:\/\/twitter.com\/podfeet\">twitter<\/a> and <a href=\"https:\/\/alpha.app.net\/podfeet\" target=\"_blank\">app.net<\/a> @podfeet.  Check out the <a href=\"https:\/\/plus.google.com\/communities\/117336672755291339814\" target=\"_blank\">NosillaCast Google Plus Community<\/a> too &#8211; lots of fun over there!  If you want to join in the fun of the live show, head on over to <a href=\"https:\/\/podfeet.com\/live\">podfeet.com\/live<\/a> on Sunday nights at 5pm Pacific Time and join the friendly and enthusiastic NosillaCastaways.  Thanks for listening, and stay subscribed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Send in your recordings for the 500th episode next week, if you&#8217;re doing holiday shopping at Amazon, please use the search box on podfeet.com to get us a little love. Slau&#8217;s &#8220;If Every Day Were Christmas&#8221; is coming out on iTunes any minute now, watch my Twitter\/G+\/FaceBook accounts for the announcement when it goes live. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[147,173,1],"tags":[],"class_list":["post-5947","post","type-post","status-publish","format-standard","hentry","category-blog-posts","category-nosillacast","category-podcasts"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/5947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/comments?post=5947"}],"version-history":[{"count":3,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/5947\/revisions"}],"predecessor-version":[{"id":5950,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/5947\/revisions\/5950"}],"wp:attachment":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/media?parent=5947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/categories?post=5947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/tags?post=5947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}