{"id":330,"date":"2018-09-25T17:45:37","date_gmt":"2018-09-26T00:45:37","guid":{"rendered":"https:\/\/rosolutions.com.mx\/blog\/?p=330"},"modified":"2018-10-09T09:17:53","modified_gmt":"2018-10-09T16:17:53","slug":"swift-4-0-utilizar-safearealayoutguide-programada","status":"publish","type":"post","link":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/","title":{"rendered":"Swift 4.0 &#8211; Utilizar SafeAreaLayoutGuide de manera programada"},"content":{"rendered":"<p>Con la introducci\u00f3n del nuevo dispositivo de Apple el a\u00f1o pasado, el iPhone X y m\u00e1s recientemente el iPhone XR, XS Y XS MAX, para los programadores se ha vuelto tarea principal el actualizar todas las Apps que ya hab\u00edamos subido a la App Store o que a\u00fan se encuentran en desarrollo, esto con el fin de que las Apps se vean bien tanto en la nueva generaci\u00f3n de iPhone&#8217;s que cuentan con el Notch, as\u00ed como con las generaciones anteriores.<\/p>\n<p>El primer paso es utilizar la instancia &#8220;<strong>SafeAreaLayoutGuide<\/strong>&#8220;. Para ello debemos asegurarnos que nuestro proyecto esta siendo compilado para iOS 11 como m\u00ednimo, ya que de lo contrario no se podr\u00e1 tener acceso a esta instancia.<\/p>\n<p><strong>SafeAreaLayoutGuide\u00a0<\/strong>es una gu\u00eda que representa la parte de la vista que no est\u00e1 cubierta por las barras de navegaci\u00f3n, barras de herramientas entre otras vistas a considerar.<\/p>\n<p>Para entenderlo mejor veamos la siguiente parte de c\u00f3digo.<\/p>\n<p>Anteriormente para agregar una vista a un UIViewController se hac\u00eda lo siguiente para considerar los m\u00e1rgenes del NavigationController y el TabBarController:<\/p>\n<pre>var viewTop : UIView = {\r\n        let view = UIView()\r\n        view.translatesAutoresizingMaskIntoConstraints = false\r\n        view.layer.masksToBounds = true\r\n        view.backgroundColor = UIColor.orange\r\n        return view\r\n    }()<\/pre>\n<p>\/\/y en el ViewDidLoad se agrega a la vista y se declaran los Constraints<\/p>\n<pre>override func viewDidLoad() {\r\nsuper.viewDidLoad()\r\nview.addSubview(viewTop)\r\n  \r\n viewTop.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true\r\n viewTop.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true\r\n viewTop.topAnchor.constraint(equalTo: view.topAnchor).isActive = true\r\n viewTop.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true\r\n}<\/pre>\n<p>De esta manera se obtiene una vista donde se pueden agregar todos los elementos que se desean ya que esta vista cuenta con los m\u00e1rgenes de los controladores de la App en la generaci\u00f3n anterior, pero en la nueva generaci\u00f3n hay que cambiar lo siguiente para tomar en cuenta los nuevos m\u00e1rgenes.<\/p>\n<pre>override func viewDidLoad() {\r\nsuper.viewDidLoad()\r\nview.addSubview(viewTop)\r\n  \r\n viewTop.leftAnchor.constraint(equalTo:\r\n \tview.safeAreaLayoutGuide.leftAnchor).isActive = true\r\n viewTop.rightAnchor.constraint(equalTo:\r\n \tview.safeAreaLayoutGuide.rightAnchor).isActive = true\r\n viewTop.topAnchor.constraint(equalTo:\r\n \tview.safeAreaLayoutGuide.topAnchor).isActive = true\r\n viewTop.bottomAnchor.constraint(equalTo:\r\n \tview.safeAreaLayoutGuide.bottomAnchor).isActive = true\r\n}<\/pre>\n<p>Agregando <strong>SafeAreaLayoutGuide<\/strong> se soluciona el problema con los Constraints de los bordes.<\/p>\n<p>La diferencia se puede ver en las siguientes imagenes<\/p>\n<p>Sin\u00a0<strong>SafeAreaLayoutGuide\u00a0<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-339\" src=\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.34.51-152x300.png\" alt=\"\" width=\"152\" height=\"300\" srcset=\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.34.51-152x300.png 152w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.34.51-768x1513.png 768w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.34.51-520x1024.png 520w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.34.51.png 854w\" sizes=\"(max-width: 152px) 100vw, 152px\" \/><\/p>\n<p><strong>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong>Con\u00a0<strong>SafeAreaLayoutGuide<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-340\" src=\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.35.51-151x300.png\" alt=\"\" width=\"151\" height=\"300\" srcset=\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.35.51-151x300.png 151w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.35.51-768x1527.png 768w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.35.51-515x1024.png 515w, https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/Captura-de-pantalla-2018-09-25-a-las-17.35.51.png 842w\" sizes=\"(max-width: 151px) 100vw, 151px\" \/><\/p>\n<p>A partir de iOS 11 todos los programadores de iOS debemos de considerar esto, y actualizar las Apps que tenemos en la tienda con el fin de que sean compatibles con la nueva generaci\u00f3n de iPhone\u00b4s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con la introducci\u00f3n del nuevo dispositivo de Apple el a\u00f1o pasado, el iPhone X y m\u00e1s recientemente el iPhone XR, XS Y XS MAX, para los programadores se ha vuelto tarea principal el actualizar todas las Apps que ya hab\u00edamos subido a la App Store o que a\u00fan se encuentran en desarrollo, esto con el [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":334,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,4,3,7,34,1],"tags":[40],"class_list":["post-330","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo","category-desarrollo-de-aplicaciones","category-desing","category-desarrollo-de-software-a-la-medida","category-software","category-uncategorized","tag-ios-11-12"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada<\/title>\n<meta name=\"description\" content=\"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada\" \/>\n<meta property=\"og:description\" content=\"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\" \/>\n<meta property=\"og:site_name\" content=\"Desarrollo de software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/rosolutionsmx\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-26T00:45:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-10-09T16:17:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1004\" \/>\n\t<meta property=\"og:image:height\" content=\"713\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jesus Rodolfo Olguin Villanueva\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ROSolutionsmx\" \/>\n<meta name=\"twitter:site\" content=\"@ROSolutionsmx\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jesus Rodolfo Olguin Villanueva\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\"},\"author\":{\"name\":\"Jesus Rodolfo Olguin Villanueva\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/person\/4a5552cff5a9ef02cc76bbb0fef516dc\"},\"headline\":\"Swift 4.0 &#8211; Utilizar SafeAreaLayoutGuide de manera programada\",\"datePublished\":\"2018-09-26T00:45:37+00:00\",\"dateModified\":\"2018-10-09T16:17:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\"},\"wordCount\":326,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg\",\"keywords\":[\"iOS 11 &amp; 12\"],\"articleSection\":[\"Desarrollo\",\"Desarrollo m\u00f3vil\",\"Dise\u00f1o\",\"Programaci\u00f3n\",\"Software\",\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\",\"url\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\",\"name\":\"Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada\",\"isPartOf\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg\",\"datePublished\":\"2018-09-26T00:45:37+00:00\",\"dateModified\":\"2018-10-09T16:17:53+00:00\",\"description\":\"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4\",\"breadcrumb\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage\",\"url\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg\",\"contentUrl\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg\",\"width\":1004,\"height\":713,\"caption\":\"desarrollo de apps iphone x\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\/\/rosolutions.com.mx\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swift 4.0 &#8211; Utilizar SafeAreaLayoutGuide de manera programada\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#website\",\"url\":\"https:\/\/rosolutions.com.mx\/blog\/\",\"name\":\"Desarrollo de software\",\"description\":\"Blog de RO Solutions\",\"publisher\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rosolutions.com.mx\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#organization\",\"name\":\"RO Solutions\",\"url\":\"https:\/\/rosolutions.com.mx\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/03\/icono-01-2.png\",\"contentUrl\":\"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/03\/icono-01-2.png\",\"width\":350,\"height\":346,\"caption\":\"RO Solutions\"},\"image\":{\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/rosolutionsmx\/\",\"https:\/\/x.com\/ROSolutionsmx\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/person\/4a5552cff5a9ef02cc76bbb0fef516dc\",\"name\":\"Jesus Rodolfo Olguin Villanueva\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g\",\"caption\":\"Jesus Rodolfo Olguin Villanueva\"},\"description\":\"Ingeniero por el Instituto tecnol\u00f3gico de Hermosillo con una trayectoria de m\u00e1s de 4 a\u00f1os como empresario en \u00e1reas de innovaci\u00f3n tecnol\u00f3gica de alto impacto.\",\"sameAs\":[\"https:\/\/rosolutions.com.mx\"],\"url\":\"https:\/\/rosolutions.com.mx\/blog\/author\/ing-rodolfo-mec\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada","description":"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/","og_locale":"es_MX","og_type":"article","og_title":"Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada","og_description":"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4","og_url":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/","og_site_name":"Desarrollo de software","article_publisher":"https:\/\/www.facebook.com\/rosolutionsmx\/","article_published_time":"2018-09-26T00:45:37+00:00","article_modified_time":"2018-10-09T16:17:53+00:00","og_image":[{"width":1004,"height":713,"url":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg","type":"image\/jpeg"}],"author":"Jesus Rodolfo Olguin Villanueva","twitter_card":"summary_large_image","twitter_creator":"@ROSolutionsmx","twitter_site":"@ROSolutionsmx","twitter_misc":{"Escrito por":"Jesus Rodolfo Olguin Villanueva","Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#article","isPartOf":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/"},"author":{"name":"Jesus Rodolfo Olguin Villanueva","@id":"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/person\/4a5552cff5a9ef02cc76bbb0fef516dc"},"headline":"Swift 4.0 &#8211; Utilizar SafeAreaLayoutGuide de manera programada","datePublished":"2018-09-26T00:45:37+00:00","dateModified":"2018-10-09T16:17:53+00:00","mainEntityOfPage":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/"},"wordCount":326,"commentCount":2,"publisher":{"@id":"https:\/\/rosolutions.com.mx\/blog\/#organization"},"image":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage"},"thumbnailUrl":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg","keywords":["iOS 11 &amp; 12"],"articleSection":["Desarrollo","Desarrollo m\u00f3vil","Dise\u00f1o","Programaci\u00f3n","Software","Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/","url":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/","name":"Swift 4.0 - Utilizar SafeAreaLayoutGuide de manera programada","isPartOf":{"@id":"https:\/\/rosolutions.com.mx\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage"},"image":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage"},"thumbnailUrl":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg","datePublished":"2018-09-26T00:45:37+00:00","dateModified":"2018-10-09T16:17:53+00:00","description":"Expertos en Desarrollo de Software, Aplicaci\u00f3nes M\u00f3viles. Aprende a Utilizar SafeAreaLayoutGuide de manera programada en Swift 4","breadcrumb":{"@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#primaryimage","url":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg","contentUrl":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/09\/maxresdefault-e1537895333268.jpg","width":1004,"height":713,"caption":"desarrollo de apps iphone x"},{"@type":"BreadcrumbList","@id":"https:\/\/rosolutions.com.mx\/blog\/swift-4-0-utilizar-safearealayoutguide-programada\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/rosolutions.com.mx\/blog\/"},{"@type":"ListItem","position":2,"name":"Swift 4.0 &#8211; Utilizar SafeAreaLayoutGuide de manera programada"}]},{"@type":"WebSite","@id":"https:\/\/rosolutions.com.mx\/blog\/#website","url":"https:\/\/rosolutions.com.mx\/blog\/","name":"Desarrollo de software","description":"Blog de RO Solutions","publisher":{"@id":"https:\/\/rosolutions.com.mx\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rosolutions.com.mx\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/rosolutions.com.mx\/blog\/#organization","name":"RO Solutions","url":"https:\/\/rosolutions.com.mx\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/03\/icono-01-2.png","contentUrl":"https:\/\/rosolutions.com.mx\/blog\/wp-content\/uploads\/2018\/03\/icono-01-2.png","width":350,"height":346,"caption":"RO Solutions"},"image":{"@id":"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/rosolutionsmx\/","https:\/\/x.com\/ROSolutionsmx"]},{"@type":"Person","@id":"https:\/\/rosolutions.com.mx\/blog\/#\/schema\/person\/4a5552cff5a9ef02cc76bbb0fef516dc","name":"Jesus Rodolfo Olguin Villanueva","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d9f7c097cc6778976ea3f490f0c8b8457622a2eba848b7d20bc7216193ab125e?s=96&d=mm&r=g","caption":"Jesus Rodolfo Olguin Villanueva"},"description":"Ingeniero por el Instituto tecnol\u00f3gico de Hermosillo con una trayectoria de m\u00e1s de 4 a\u00f1os como empresario en \u00e1reas de innovaci\u00f3n tecnol\u00f3gica de alto impacto.","sameAs":["https:\/\/rosolutions.com.mx"],"url":"https:\/\/rosolutions.com.mx\/blog\/author\/ing-rodolfo-mec\/"}]}},"_links":{"self":[{"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/posts\/330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=330"}],"version-history":[{"count":11,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/posts\/330\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/posts\/330\/revisions\/345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/media\/334"}],"wp:attachment":[{"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosolutions.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}