Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在约束中添加计算是否会降低系统性能?_Ios_Swift - Fatal编程技术网

Ios 在约束中添加计算是否会降低系统性能?

Ios 在约束中添加计算是否会降低系统性能?,ios,swift,Ios,Swift,我是一个初学者,刚开始学习swift,对布局约束有一个问题 如果要在表视图单元格中键入imageView的约束,如下所示: func setConstraints(){ //Method 1 NSLayoutConstraint.activate([ clientPhoto.leftAnchor.constraint(equalTo: baseView.leftAnchor,constant: 12),

我是一个初学者,刚开始学习swift,对布局约束有一个问题

如果要在表视图单元格中键入imageView的约束,如下所示:

            func setConstraints(){
//Method 1            
     NSLayoutConstraint.activate([
                clientPhoto.leftAnchor.constraint(equalTo: baseView.leftAnchor,constant: 12),
                clientPhoto.topAnchor.constraint(equalTo: baseView.topAnchor,constant: 2),
                clientPhoto.widthAnchor.constraint(equalToConstant: 20),
                clientPhoto.heightAnchor.constraint(equalToConstant: 23)
                ])

    //OR
//Method 2  
     NSLayoutConstraint.activate([
                clientPhoto.leftAnchor.constraint(equalTo: baseView.leftAnchor,constant: 12),
                clientPhoto.topAnchor.constraint(equalTo: baseView.topAnchor,constant: 2),
                clientPhoto.widthAnchor.constraint(equalToConstant: UIscreen.main.bounds.width/2),
                clientPhoto.heightAnchor.constraint(equalToConstant: UIScreen.main.bounds.height/4)
                ])
            }
        }
在上面写的方法1和2中,哪一种执行速度更快,增长了多少?有人告诉我,在约束中进行计算会降低系统的性能

如果常数加数字的方式更好,那么在不同设备(iPhone SE-XS Max)上以相同比例显示UI时,我如何解释屏幕宽度和高度的变化?

简短的回答是“不,这两种方式之间没有显著差异”

原因如下:实际上,您只需计算一次值,然后设置值。不需要更多的计算。非常非常快

我不确定你听说过关于布局性能的什么,但简而言之,约束是一个复杂的方程系统,所以每次系统需要布局任何子视图时,它都会重新计算所有方程。这就是需要花费大量时间去做的事情——去解所有的方程。因此,如果使用常量设置简单约束(就像您在问题中所做的那样),则可以简化系统工作。
您听说过的“带计算的约束”可能是一个带等式的约束,如“绑定到另一个视图高度一半的宽度”。

理论上,方法1会稍微快一点,因为您使用的是常数。但由于这只是一个单独的分区,您不会注意到任何差异,我确信您甚至无法测量差异,因为差异太小。那么,如果常数使系统更容易处理,我如何解释iPhone屏幕大小的差异?如果我设计了一个5秒的用户界面,然后尝试用8+或8+来查看它,会不会有偏移?1。您可以自由使用“动态”约束。没有“不要使用复杂约束,否则您的应用程序将挂起”这样的规则。最好不要过度使用它。在添加更多复杂约束之前,绑定到屏幕大小的简单约束仍然可以非常快速地工作。2.我是你的朋友。测量系统在重新调整和fps值上花费的时间以了解,如果需要优化,您可以在哪里优化约束。3.所以,现在不要过分复杂化。只要使用这些约束,直到你发现它们真的伤害了你的应用:)