Я пытаюсь центрировать пользовательский UIView в UITableViewCell. Что-то довольно базовое c IMO. Я использовал этот код для создания UIView, я нашел его здесь в stackoverflow:
class SkeletonView: UIView {
var startLocations : [NSNumber] = [-1.0,-0.5, 0.0]
var endLocations : [NSNumber] = [1.0,1.5, 2.0]
var gradientBackgroundColor : CGColor = UIColor(white: 0.85, alpha: 1.0).cgColor
var gradientMovingColor : CGColor = UIColor(white: 0.75, alpha: 1.0).cgColor
var movingAnimationDuration : CFTimeInterval = 0.8
var delayBetweenAnimationLoops : CFTimeInterval = 1.0
lazy var gradientLayer : CAGradientLayer = {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.startPoint = CGPoint(x: 0.0, y: 1.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.colors = [
gradientBackgroundColor,
gradientMovingColor,
gradientBackgroundColor
]
gradientLayer.locations = self.startLocations
self.layer.addSublayer(gradientLayer)
return gradientLayer
}()
func startAnimating(){
let animation = CABasicAnimation(keyPath: "locations")
animation.fromValue = self.startLocations
animation.toValue = self.endLocations
animation.duration = self.movingAnimationDuration
animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
let animationGroup = CAAnimationGroup()
animationGroup.duration = self.movingAnimationDuration + self.delayBetweenAnimationLoops
animationGroup.animations = [animation]
animationGroup.repeatCount = .infinity
self.gradientLayer.add(animationGroup, forKey: animation.keyPath)
}
func stopAnimating() {
self.gradientLayer.removeAllAnimations()
}
}
Затем я просто добавил вид к моей ячейке xib, центрированный по горизонтали, передний край +15, верхний +15 и нижний + 15 (с приоритетом 900, чтобы автоматическое расположение не волновало, что высота равна 320 вместо расчетного значения 320,1). Таким образом, он центрируется в предварительном просмотре XIB.
![enter image description here](https://i.stack.imgur.com/ArwF5.png)
При запуске приложения это выглядит так, как вы можете видеть, что есть разрыв с левой стороны, но не с правой стороны, поэтому он не центрирован:
![uita](https://i.stack.imgur.com/Zlal4.jpg)
Но когда я взгляну на иерархию пользовательского интерфейса, он будет центрирован ?! ![enter image description here](https://i.stack.imgur.com/APJyG.jpg)