Swift - UIView框架不等于UIView.layer.frame

 Yyao 发布于 2022-12-10 20:36

我想绘制一个UIView图层但是当我这样做时,图层框架与UIView框架不相等(在预览中). 在此输入图像描述

class ViewController: UIViewController {

    var graphHeight:CGFloat = 100
    var graphSize:CGFloat!

    override func viewDidLoad() {
        super.viewDidLoad()
        graphSize = self.view.frame.height/CGFloat(M_PI)
        let graphRect:CGRect = CGRectMake(0, graphHeight, self.view.frame.width, graphSize)
        let background = blueGardient()
        var theView:UIView = UIView(frame: graphRect)
        background.frame = theView.frame
        theView.backgroundColor = UIColor.yellowColor()
        theView.layer.cornerRadius = 8
        theView.layer.borderWidth = 1
        theView.layer.borderColor = UIColor.redColor().CGColor
        theView.layer.insertSublayer(background, atIndex: 0)
        self.view.addSubview(theView)

    }

    func blueGardient()->CAGradientLayer{
        let topColor = UIColor(red: 0, green: 0, blue: 255, alpha: 0.7)
        let bottomColor = UIColor(red: 0, green: 0, blue: 255, alpha: 0.9)
        let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
        let gradientLocations: [Float] = [0.0, 1.0]
        let gradientLayer: CAGradientLayer = CAGradientLayer()
        gradientLayer.colors = gradientColors
        gradientLayer.locations = gradientLocations
        return gradientLayer
    }
}

框架是平等的

(0.0,100.0,320.0,180.800015352393)
(0.0,100.0,320.0,180.800015352393)

但没有显示eauql.我尝试使用theView.layer.frame但未成功...

1 个回答
  • 问题是因为每个帧的上下文不同.您的视图框架(theView.frame)位于其超视图的上下文中,因此(0,100)原点意味着它从屏幕的左上角向下偏移100个点.图层的frame(background.frame)位于它所属视图的上下文中(theView),因此相同的(0,100)原点意味着蓝色图层从视图的左上角偏移了100个点.

    而不是使用视图,使用视图的frame大小bounds和(0,0)原点创建一个新的rect :

    background.frame = CGRect(origin: CGPointZero, size: theView.bounds.size)
    

    2022-12-11 03:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有