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.pswp.cn/news/541707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541707.shtml
英文地址,請注明出處:http://en.pswp.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…