以编程方式添加约束不尊重优先级

时间:2018-02-09 17:08:02

标签: ios swift constraints nslayoutconstraint

下面是一个循环,它为superview添加了视图。每个子视图都是删除按钮和左侧信息......它们位于父视图中......

每个子视图都被约束到上面的视图...并且顶视图被约束到父视图的顶部边缘。所有以编程方式添加。

删除按钮将一次删除一个

The fine version where I dont add the secondary priority 800 top anchor

一旦我为每个视图添加了一个辅助顶部约束以考虑删除,那么我得到以下内容....

enter image description here

DECLARE @StartDate datetime = '01/01/2018',
        @EndDate datetime = '01/31/2018';

WITH WeekNumbers AS(
    SELECT CONVERT(date,@StartDate) AS [Date],
           1 AS WeekNumber
    UNION ALL
    SELECT NULL,
           WeekNumber + 1
    FROM WeekNumbers
    WHERE WeekNumber <= DATEDIFF(WEEK, @StartDate, @EndDate))
SELECT *
FROM WeekNumbers;

1 个答案:

答案 0 :(得分:2)

你的技术错了。您不会为每个视图添加&#34;辅助顶部约束以考虑删除&#34;。删除视图时,将完全删除现有约束并创建一组全新约束。

或者,使用UIStackView,它可以为您完成工作:您将已排列的视图isHidden设置为true,堆栈视图会重写其排列视图的约束。

在您的情况下,更简单的技术是使您的界面成为UITableView。现在您要做的就是删除表格的一行。 &#34;删除此行的概念&#34;基本上是内置于表视图中;你几乎可以免费获得它(包括删除按钮,但没有法律规定你必须使用它)。