为什么点击 Today Notification Widget 中的按钮会导致整个视图向左移动?

Why tapping a button in Today Notification Widget causes whole view move to left?

我做了一个Today Notification Widget,我用了AutoLayout。 当我按下数字按钮时,整个视图向左移动。我不知道为什么。

为什么点击按钮时视图会向左移动?是来自 AutoLayout 还是普遍问题?

之前touch

touch

之后

图片1

图片2

图3

这似乎是您的实施有问题。除非您在点击按钮时更改某些位置或自动布局约束,否则没有理由发生这种情况。另外,您可能想看看 widgetMarginInsetsForProposedMarginInsets 函数并且您已经从 NCWidgetProviding 继承:

class MainViewController: UIViewController, NCWidgetProviding {

 func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsZero
 }
}

...无论如何,你的问题真的很广泛,也许你会想要添加一些来源以获得进一步的见解。

希望对您有所帮助!

UPDATE:

问题是,当您输入一些文本时,该视图的边距会变大,这会做一些奇怪的事情,因为您缺少一些与视图相关的约束(您的 UITextField/UILabel) 为您的右侧前导边距约束赋予价值。

如果你完全隔离,右边部分和左边部分,也许把它们放在不同的视图中。您应该能够解决此问题,因为左视图内的任何更改都保留在左视图中。

其他方法是删除所有约束并重新开始,手动设置约束,不要让 xcode 为您完成这项工作