自定义 Activity 指标未居中
Custom Activity Indicator Not Centered
我正在使用来自 github 的 mownier 的 MONActivityIndicator:https://github.com/mownier/MONActivityIndicatorView
我是这样设置指标的:
var activity = MONActivityIndicatorView()
activity.numberOfCircles = 5
activity.radius = 10
activity.internalSpacing = 3
activity.duration = 0.5
activity.delay = 0.3
activity.center = self.view.center
self.view.addSubview(activity)
activity.startAnimating()
问题是指示器没有出现在中心,而是出现在视图的右上角,这是为什么?
您可以将约束添加到 activity 视图中,并使其居中,就像在演示项目中所做的那样。
这是 swift 中的函数:
func placeAtTheCenterWithView(view: UIView) {
self.view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0))
}
从代码中删除这一行:
activity.center = self.view.center
您的最终代码将是:
var activity = MONActivityIndicatorView()
activity.numberOfCircles = 5
activity.radius = 10
activity.internalSpacing = 3
activity.duration = 0.5
activity.delay = 0.3
self.view.addSubview(activity)
self.placeAtTheCenterWithView(activity) //center it with constraint.
activity.startAnimating()
另一种使其居中的方法是在主线程中这样做:
dispatch_async(dispatch_get_main_queue()) {
activity.center = self.view.center
}
我正在使用来自 github 的 mownier 的 MONActivityIndicator:https://github.com/mownier/MONActivityIndicatorView
我是这样设置指标的:
var activity = MONActivityIndicatorView()
activity.numberOfCircles = 5
activity.radius = 10
activity.internalSpacing = 3
activity.duration = 0.5
activity.delay = 0.3
activity.center = self.view.center
self.view.addSubview(activity)
activity.startAnimating()
问题是指示器没有出现在中心,而是出现在视图的右上角,这是为什么?
您可以将约束添加到 activity 视图中,并使其居中,就像在演示项目中所做的那样。
这是 swift 中的函数:
func placeAtTheCenterWithView(view: UIView) {
self.view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0))
}
从代码中删除这一行:
activity.center = self.view.center
您的最终代码将是:
var activity = MONActivityIndicatorView()
activity.numberOfCircles = 5
activity.radius = 10
activity.internalSpacing = 3
activity.duration = 0.5
activity.delay = 0.3
self.view.addSubview(activity)
self.placeAtTheCenterWithView(activity) //center it with constraint.
activity.startAnimating()
另一种使其居中的方法是在主线程中这样做:
dispatch_async(dispatch_get_main_queue()) {
activity.center = self.view.center
}