gpt4 book ai didi

swift - 在 Swift 中获取任何 UIView 的中心

转载 作者:IT王子 更新时间:2023-10-29 05:28:40 24 4
gpt4 key购买 nike

我正在尝试编写一个全局函数,通过调用此类函数将 activityIndi​​cator 添加到任何 View (虽然主要是 imageViews)。

我现在拥有的功能由:

public func addActivityIndicatorToView(activityIndicator: UIActivityIndicatorView, view: UIView){

//activityIndicator configuration ...
activityIndicator.center = view.center
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
}

但由于某种原因我没有得到 View 的中心。

我也尝试过围绕 SO 和 Google 的各种解决方案,但直到现在都没有奏效。

有什么方法可以获取中心点并将 activityIndi​​cator 设置为任何 UIView?

最佳答案

原答案:

我很容易地重现了你的问题(见我的评论)。我认为这可能是自动布局的问题。那么您是否可以使用约束来代替计算位置?

func addActivityIndicatorToView(activityIndicator: UIActivityIndicatorView, view: UIView){

self.view.addSubview(activityIndicator)

//Don't forget this line
activityIndicator.setTranslatesAutoresizingMaskIntoConstraints(false)
view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))


activityIndicator.startAnimating()


}

Swift 5.0 的更新代码:

  • 来自 Rob 的编辑
  • NSLayoutAttribute.CenterX 现在是 NSLayoutConstraint.Attribute.centerX
  • NSLayoutRelation.Equal 现在是 NSLayoutConstraint.Relation.equal
  • NSLayoutAttribute.CenterY 现在是 NSLayoutConstraint.Attribute.centerY
func addActivityIndicatorToView(activityIndicator: UIActivityIndicatorView, view: UIView){

self.view.addSubview(activityIndicator)

//Don't forget this line
activityIndicatorView.translatesAutoresizingMaskIntoConstraints = false
view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutConstraint.Attribute.centerX, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.centerX, multiplier: 1, constant: 0))
view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutConstraint.Attribute.centerY, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.centerY, multiplier: 1, constant: 0))

activityIndicator.startAnimating()

}

关于swift - 在 Swift 中获取任何 UIView 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com