将视图集中在UITableViewCell内部?看起来居于UI层次结构的中心,而不是实际的应用程序?

问题描述 投票:0回答:2

我正在尝试将自定义UIView放在UITableViewCell中。相当基本的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

运行该应用程序时,它看起来像这样,您可以看到左侧有一个间隙,但右侧没有间隙,因此它没有居中:

uita

但是当我查看UI层次结构时,它居中吗?enter image description here

swift uitableview user-interface uiview centering
2个回答
0
投票

[enter image description here删除centered horizontally约束并将15添加trailing constraint将解决您的问题

在我这边足够好


0
投票

没关系,我发现了问题。 UIView放置正确,但是我放在顶部的gradientLayer的尺寸错误。所以我加了行

gradientLayer.frame = self.bounds

在骨架UIView类内部的layoutSubviews函数中。

© www.soinside.com 2019 - 2024. All rights reserved.