debugging Auto Layout:Logical Errors

Logical Errors逻辑错误

Logical errors are simply bugs. Somewhere, you have an assumption that is faulty. Perhaps it’s an assumption about how Auto Layout calculates the views’ frames. Perhaps it’s an assumption about the set of constraints that you’ve created, or the view properties you’ve set. Perhaps it’s an assumption about how the constraints interact to create complex behaviors. Regardless, something somewhere does not quite match your mental model.

逻辑错误只是错误。某处,你有一个假设是错误的。也许这是关于自动布局如何计算视图框架的假设。也许这是关于你创建的约束集的假设,或者是你设置的视图属性。也许这是一个假设的约束如何相互作用,创造复杂的行为。无论如何,某个地方的东西与你的心智模型不太相符。

Logical errors are the hardest to find. After you eliminate all other possibilities, whatever remains, however improbable, must be a logical error. However, even after you’ve determined that you have a bug, you must still discover where, exactly, the faulty assumption lies.

逻辑错误是最难找到。在排除所有其他可能性之后,无论剩下什么,无论多么不可能,都必须是一个逻辑错误。然而,即使你已经确定你有一个bug,你必须仍然发现哪里,确切地说,错误的假设谎言。

There are no tools or step-by-step instructions here. Fixing logical errors typically involves experiments and iterative tests, both to identify the problem and to figure out how to fix it. There are, however, a few suggestions that may help:

这里没有工具或一步一步的说明。固定逻辑错误通常涉及实验和迭代测试,既要找出问题,又要找出如何解决它。有,但是,一些建议,可能有助于:

  • Review the existing constraints. Make sure you haven’t missed any constraints or accidentally added unwanted constraints. Make sure all the constraints are attached to the correct items and attributes.回顾现有约束。确保您没有错过任何约束或意外添加不必要的约束。确保所有约束都附在正确的项目和属性上。

  • Double-check the view frames. Make sure nothing is getting unexpectedly stretched or shrunk.双检查视图帧。确保没有什么意外的拉伸或缩小。

    This is particularly important for views with invisible backgrounds, like labels or buttons. It may not be obvious when these items are unexpectedly resized.这是特别重要的视图与无形的背景,如标签或按钮。它可能不是很明显时,这些项目都是出人意料的调整。

    One symptom of resizing is that baseline-aligned views no longer line up properly. This is because the baseline alignment works only when the view is displayed at its intrinsic content height. If you stretch or shrink the view vertically, the text mysteriously appears in the wrong location.调整大小的一个症状是基线对齐视图不再正确排列。这是因为基线对齐仅在视图以其内在内容高度显示时生效。如果垂直拉伸或缩小视图,则文本会出现在错误的位置。

  • If a control should always match its intrinsic content size, give it a very high content-hugging and compression-resistance priority (for example, 999). 

    如果控件应该始终匹配其内在内容的大小,给它一个非常高的内容拥抱和压缩优先权(例如,999)。

  • Look for any assumptions that you’re making about the layout, and add explicit constraints to make sure those assumptions are true.寻找关于布局的任何假设,并添加显式约束以确保这些假设是正确的。

    Remember, unsatisfiable layouts are generally the easiest problems to find and fix. Add additional constraints until you have a conflict, then examine and fix the conflict.

    记住,不可满足的布局一般是最容易发现问题和解决问题。添加额外的约束,直到你有冲突,然后检查和修复冲突。

  • Try to understand why the given constraints are producing the results that you see. If you understand it, you’re well on the way to fixing it.试着理解为什么给定的约束产生你所看到的结果。如果你明白了,那么你就在修复它的道路上。

  • Experiment with alternative constraints. Auto Layout typically gives you a number of different solutions for the same problem. Trying an different approach may fix the problem or at least make it easier to spot the mistake.替代约束实验。自动布局通常为同一问题提供多个不同的解决方案。尝试不同的方法可以解决这个问题,或者至少能让你更容易发现错误。

转载于:https://www.cnblogs.com/zyingn/p/debuggingAutoLayout__LogicalErrors.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux反序列化漏洞,思科多个产品Java反序列化漏洞(CVE-2015-6420)

思科多个产品Java反序列化漏洞(CVE-2015-6420)发布日期:2015-12-15更新日期:2015-12-17受影响系统:Cisco Unified ComputingCisco Voice and Unified Communications DevicesCisco Wireless描述:CVE(CAN) ID: CVE-2015-6420思科是…

密码学替代技术_替代技术及其类型| 密码学

密码学替代技术As we already discussed what are the Substitution techniques and one of its type Ceasar Cipher? So we are not discussing it here for that please refer to Cryptography: CeasarCipher here: Cryptography: Caesar Cipher and its Python Implementat…

Flask+uwsgi+Nginx环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表: setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0.1.tar.gz nginx-1.10.3.tar.gz 软件统一上传到/usr/local/src/下,python是使用自己编译的。Python安装 先安装以…

穿越迷宫c语言程序设计教程课后答案,实验二 迷宫实验.doc

#include #define ROW 11#define COLUMN 15typedef struct{ /*栈中的数据元素的类型定义*/int row; /*行下标*/int col; /*列下标*/int direction; /*下一步移动方向*/} DATA;Typedif struct node{ /* 栈类定义*/DATA data;Struct node *next;}LinkStack;Typedef struct{/*移动…

ofb模式_密码学中的输出反馈模式(OFB)

ofb模式This is an output feedback (OFB) mode is similar in structure to that of CFB in Cryptography. It is the output of the encryption function that is fed back to the shift register in OFB in the cryptography, whereas in CFB in the mode of blocks, the ci…

JavaScript0-闭包

1.闭包的概念:在JavaScript中局部作用域总是能够访问到全局作用域,即内部函数总是能够访问到外部函数的参数和变量,即使内部函数调用完毕。也就是指有权访问到函数作用域里的变量。 function fn1() {var x 0;return function() {cosole.log(…

win8编程c语言,Win8系统怎么运行C语言 win8系统运行C语言的方法

C语言是一门通用计算机编程语言,是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言,但是许多win8系统用户并不知道要怎么运行C语言,针对这个情况,小编就给大家分享一…

stack示例_C.示例中的Stack.CopyTo()方法

stack示例C#Stack.CopyTo()方法 (C# Stack.CopyTo() method) Stack.CopyTo() method is used to copy the stack elements/objects to an existing array from the given index. Stack.CopyTo()方法用于将堆栈元素/对象从给定索引复制到现有数组。 Syntax: 句法&am…

Linux sudoers文件的写法

2019独角兽企业重金招聘Python工程师标准>>> 文件的组成 sudoers文件由三部分组成: sudoers的默认配置,主要设置sudo的一些缺省值(本文不会对这些默认配置进行介绍,若有兴趣可以自己man 5 sudoers然后搜defaults)alias…

if是什么c语言,这个C语言是什么(if(1))?

我在openssl源代码中注意到一个奇怪的成语,here并重复如下:if ((in NULL) && (passwds NULL)) {if (1) { (* #ifndef OPENSSL_NO_UI/* build a null-terminated list */static char *passwds_static[2] { NULL, NULL };passwds passwds_static;if (in …

c#queue_带有C#示例的Queue.CopyTo()方法

c#queueC#Queue.CopyTo()方法 (C# Queue.CopyTo() method) Queue.CopyTo() method is used to copy the Queue elements/objects to an existing array from specified index. Queue.CopyTo()方法用于将Queue元素/对象从指定的索引复制到现有数组。 Syntax: 句法&a…

指针在c语言中的运用,怎么理解C语言中的指针,如何运用?

恰好我之前写了一系列介绍 C 语言的文章,介绍了什么是指针,以及为什么要使用指针,下面摘录一部分,感兴趣的话,可以点我了解更多。什么是 C语言指针?不同的数据类型的主要区别在于占用的存储空间不同。我们知…

设计模式(一)单例模式的七种写法

1. 饿汉模式 public class Singleton { private static Singleton instance new Singleton(); private Singleton (){}public static Singleton getInstance() { return instance; } } View Code这种方式在类加载时就完成了初始化,所以类加载较慢,…

scala 字符串转换数组_如何在Scala中将字节数组转换为字符串?

scala 字符串转换数组Byte Array in Scala is an array of elements of a byte type. String in Scala is a collection of the character data type. Scala中的字节数组是字节类型的元素的数组。 Scala中的String是字符数据类型的集合。 将字节数组转换为字符串 (Convert byt…

智能关机软件 c语言,智能关机软件

智能关机软件是一款免费共享关机软件。智能关机软件不但具有定时关机、自动关机的功能,而且还可以进行定时提醒信息、打开文件、打开网页、重启计算机、注销用户、锁定计算机、计算机休眠、计算机待机、关闭显示器,并且可以进行多任务计划,可…

wget: command not found

-bash: wget: command not found的两种解决方法 今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包。一般linux最小化安装时,wget不会默认被安装。可以通过以下两种方法来安装:1、rpm 安装rp…

数据库数据规范化看不懂_数据库管理系统中的规范化

数据库数据规范化看不懂DBMS中的规范化 (Normalization in DBMS) Every table must have a single idea. The method by which we divide tables approximately is called normalization and the rest used for normalization is a functional dependency. For the normalizati…

c 语言开发一个四则运算器,C++实现四则运算器(无括号)

本文实例为大家分享了C实现无括号的四则运算器的具体代码,供大家参考,具体内容如下完成度更高的带括号版本可以看C实现四则运算器(带括号)对于无括号的计算器,实现起来比较容易,下面让我们一步步实现。举例首先明确需要实现怎样的…

iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧

最近在做用户登录获取验证码时添加图形验证码功能,就是只有正确输入图形验证码才能收到后台发送的短信验证码。效果如下: 看起来虽然是个小功能,但是实际操作起来,会发现苹果给我们留下的坑,当然更多的是自己给自己挖的…

c ++查找字符串_C ++结构| 查找输出程序| 套装1

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>#include <math.h>using namespace std;struct st {int A NULL;int B abs(EOF EOF);} S;int main(){cout << S.A << " " << S.B;return 0;}Output: 输出&#xff1a…