前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这个断点可以帮你检查布局约束

这个断点可以帮你检查布局约束

作者头像
Mr.RisingSun
发布于 2018-01-12 10:07:04
发布于 2018-01-12 10:07:04
1.2K00
代码可运行
举报
文章被收录于专栏:移动端开发移动端开发
运行总次数:0
代码可运行

前言:

    在现在iOS布局中,估计有很多很多开发者会使用到 Masonry 或者用到 SDAutoLayout 或者Storyboard或者还有Xib等等,前面两个三方的确是方便了我们的布局,但你写完之后难免可能布局约束支架会有一些冲突或者会有约束警告的出现,比如那个约束要突破那个约束的警告等等。在这里就分享一下写完布局之后自己对布局约束的算是一种检查方法吧。

    大家应该听过 UIViewAlertForUnsatisfiableConstraints 这个断点,这个在你写约束出现警告的时候Xcode自己会打印出来,不如下面的图片当中画了红线的这句Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints tocatch this in the debugger,Xcode让你打 UIViewAlertForUnsatisfiableConstraints 断点调试:

Screenshot (18).png
Screenshot (18).png

那这个断点到底该怎么用?

    下面的就是一些自己使用这个断点的一些方法,说不上多么高大上,但自己觉得还是挺实用的,其实在我刚约到这个断点的时候,也是一脸的懵逼,加进去了这个断点,但就是不知道怎么用,感觉似乎没什么用,但其实是我们不会用...

    直到在 Stackoverflow 看到了这个 How to trap on UIViewAlertForUnsatisfiableConstraints? 答案,才感觉知道怎么用了!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  I added UIViewAlertForUnsatisfiableConstraints symbolic breakpoint with suggested action:

      Obj-C project

  po [[UIWindow keyWindow] _autolayoutTrace]

      Swift project

  expr -l objc++ -O -- [[UIWindow keyWindow] _autolayoutTrace]
代码语言:javascript
代码运行次数:0
运行
复制

嗯嗯,答案就是这样,在仔细分享一下自己的用法:首先你就按这样,我的是OC项目,你就加这样的断点:

接下来看看我这边的打印和问题,为了看到一个完整的打印,这里的图片是拼起来的:

通过上面的这些打印,这个完整的界面结构和地址也就全都打印出来了,接下来你在仔细看看下面的这张约束问题打印图上面是有约束有问题控件的地址的而上面的界面层级打印中每一个控件的地址也是打印出来的:

看到这个界面约束有问题控件的地址,你能做的就是全局搜索,找到这个控件:比如下面的,我们来找0x14d65fdb0这个地址的控件,在打印这个全局搜索,就找到了这个:

就是上图中的这个Label,然后你通过上面打印出来的层级和这个Label的赋值,你给这个Label赋的text是一个很好的帮助,你就可以精确的找到是哪一个控件的约束有问题:通过这样我找到这个控件,检查它的约束:

的确是就是因为自己的疏忽,就写出了这样的一个约束(大家还是认真点,不要学我(∩_∩))!通过上面的这个方法,就很好的帮我们精确的找到了写的有问题的约束了,希望对大家能有所帮助!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谈谈 Autolayout
刚开始使用 Autolayout 遇到下面的警告人容易让人气馁,经常不知所措而放弃了使用 Autolayout。
s_在路上
2018/09/11
7670
谈谈 Autolayout
关于Autolayout和Masonry自动布局的几个坑
自动布局 02 Mar 2016 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood 的iCarousel 或SwipeView ,而是采用了之前一直在用的SCPageViewController 。 记录下自动布局中遇到的几个坑。 关于translatesAutoresizingMaskIntoConstraints
freesan44
2018/09/05
1.8K0
关于Autolayout和Masonry自动布局的几个坑
关于Autolayout和Masonry自动布局的几个坑
最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood的iCarousel或SwipeView,而是采用了之前一直在用的SCPageViewController。
freesan44
2018/09/05
1.7K0
关于Autolayout和Masonry自动布局的几个坑
XCode基本使用及调试技巧
对于初学iOS开发的同学,了解了Objective-C的基本使用后,最关心的应该是如何把OC程序运行起来。由于Xcode的基本使用比较简单,所以本文着重介绍一些Xcode的调试技巧。 一、基本使用 二、断点 三、常用命令 四、多线程 五、UI调试 六、其他 一、基本使用 1、如何创建一个工程: 打开Xcode -> File -> New -> Project 创建一个最简单的Single View Application。 一路Next,输入工程名,选择工程所在目录,最后Create。 2、Xcode
微信终端开发团队
2018/01/29
6.9K0
XCode基本使用及调试技巧
iOS界面布局之二——初识autolayout布局模型
     在上一篇博客中介绍了传统的布局方式:autoresizing。随着iphone型号的越来越多,屏幕的标准也更加多样化,通过autoresizing已经不能满足开发的需求,而进行两套布局或者动态代码控制又大大增加了开发者的工作量,autolayout的出现拯救个这一切,它让动态布局变的十分简单便捷。
珲少
2018/08/16
1.1K0
iOS界面布局之二——初识autolayout布局模型
iOS 布局进阶:你真的会用 autolayout 么?
iOS系统已经迎来了10.3.2版本,iOS软件开发发展至今已经相当成熟了。布局的方式从frame、size、center到如今强大的autolayout,将UI布局尽量的“自动化”和“智能化”,在很大程度上减少了程序员的工作量。
波儿菜
2018/05/07
1.6K0
iOS 布局进阶:你真的会用 autolayout 么?
逆向开发从零到整(LLDB)
LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。在日常的开发和调试过程中给开发人员带来了非常多的帮助。
CC老师
2019/01/23
1.1K0
利用约束优先级解决Autolayout冲突
当你在运行程序的时候,发现Xcode的终端打印了一些控件的布局冲突信息时,类似于如下:
用户6094182
2019/08/23
1.6K0
利用约束优先级解决Autolayout冲突
iOS——调试工具LLDB学习
  LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。在日常的开发和调试过程中给开发人员带来了非常多的帮助。了解并熟练掌握LLDB的使用是非常有必要的。这篇文章将会带着大家一起了解在iOS开发中LLDB调试器的使用。
mukekeheart
2019/09/29
1.1K0
iOS——调试工具LLDB学习
AppleWatch开发入门二——界面布局 原
        在iphone开发中,最基本的布局方式是通过frame,将控件的位置和大小固定在屏幕上,后来,由于手机屏幕的尺寸有了略微变化,有了autoresizing的布局框架,我们可以设置子视图随父视图的改变做一些相应的变化,再后来,iphone的尺寸与分辨率也越来越多,适配各个屏幕也成为了iOS开发者遇到的新的问题,幸运的是,autolayout机制的出现,大大减小了开发者在适配方面的成本。以上提到的两种布局方式,在以前博客中有讨论:
珲少
2018/08/16
7820
AppleWatch开发入门二——界面布局
                                                                            原
扒虫篇-Debug几个实用的方法
Bebug调试程序是开发中最常见的问题,对于一些简单有效的调试技巧的了解是很有必要的。这篇文章就列举Debug中用到的一些简单的技巧。
進无尽
2018/09/12
1.7K0
扒虫篇-Debug几个实用的方法
Xcode断点的小知识
我们在日常开发中离不开代码的调试和分析,断点调试是任何开发环境都必不可少的功能。Xcode提供了强大的断点调试,可以帮助我们进行差错分析等。
CC老师
2022/01/14
1.8K0
Xcode断点的小知识
Autolayout
Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的 Autolayout自iOS6开始引入,由于Xcode4的不给力,当时并没有得到很大推广自iOS7(Xcode5)开始,Autolayout的开发效率得到很大的提升 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面 Autolayout能很轻松地解决屏幕适配的问题 Autolayout的2个核心概念 参照 约束 与 Autoresizing 区别 在Autolayout之前,有Autoresizing可以
用户1941540
2018/05/11
1K0
深入剖析Auto Layout,分析iOS各版本新增特性
先前写到的一篇Masonry心得文章里已经提到了很多AutoLayout相关的知识,这篇我会更加详细的对其知识要点进行分析和整理。
用户7451029
2020/06/16
1.4K0
iOS自动布局——Masonry详解
UI布局是整个前端体系里不可或缺的一环。代码的布局是设计语言与用户视觉感受沟通的桥梁,不论它看起来多么简单或是琐碎,但不得不承认,绝大部分软件开发的问题,都是界面问题。那么,如何高效的完成UI开发,也是软件行业一直在克服的问题。
鹅厂新鲜事儿
2018/04/11
3.2K2
iOS自动布局——Masonry详解
iOS逆向(7)-LLDB,自制LLDB脚本,窜改微信红包金额
https://juejin.im/post/5caad5d6f265da251d4b875a”
iOSSir
2019/06/14
1.2K0
iOS逆向(7)-LLDB,自制LLDB脚本,窜改微信红包金额
基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了
这篇文章主要介绍下有关UIApplication、UIWindow以及程序的启动流程,通过这篇文章,相信你会更加理解iOS 的应用启动过程以及app应用级别的相关知识。
進无尽
2018/09/12
1.7K0
基础篇-UIApplication、UIWindow以及程序的启动流程看我就够了
Android入门学习笔记(2)UI布局
View类位于android.view包(android.view.View)中,View类的子类位于android.widget[译:小器物](android.widget.TextView)包中
逆回十六夜
2020/01/10
8860
六天完成一个简单iOS App - 第六天
第六天任务 推荐标签页面的完成 圆形头像的设置和封装 评论界面的完成 新帖界面的完成 发布界面的完成 推荐标签页面的完成 点击精华页面左上角按钮来到推荐标签界面。 推荐标签界面 推荐标签的实
xx_Cc
2018/05/10
1.5K0
Chrome代码调试指南
安装此插件后,如果网页是由 react 开发的,那么开发者工具会多出一个 react 的选项,并且插件图标是点亮的。
Dreamy.TZK
2020/08/20
2.4K0
Chrome代码调试指南
相关推荐
谈谈 Autolayout
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验