我是Swift的新手,我似乎无法找出最基本的东西之一 - 为CALayer设置框架和边界,所以我可以稍后阅读它们。
我正在尝试查看在CALayer上绘制框的位置,以确定它与图层中心的接近程度。
我会假设CALayer与子视图中添加的图层/视图大小相同,但是当我查看CALayer的框架或边界时它是零。对于superview图层/视图也一样。
非常感谢任何帮助!
目标:检查在图层中写入框的位置
伪代码:
create new layer
draw a box on layer
look at box dimensions and compare to layer dimensions
if box near middle of the layer then print success
查看/图层层次结构(从上到下)
1. CALayer named shapeLayer
2. CALayer named previewLayer (this is a AVCaptureVideoPreviewLayer)
3. UIView named videoPreview
我无法为3个视图/图层中的任何一个设置框架或边界。当我读取帧或边界值时,我得到的全部为0。
注意,我也试过在viewWillAppear中调用代码,但结果相同。
override func viewDidLoad() {
super.viewDidLoad()
if let previewLayer = self.videoCapture.previewLayer {
self.videoPreview.layer.addSublayer(previewLayer)
videoCapture.previewLayer?.frame = videoPreview.bounds
}
if videoCapture.previewLayer?.frame != nil {
videoCapture.previewLayer!.frame = CGRect(x:0, y:0, width:375, height: 667)
let w = videoCapture.previewLayer!.frame.height
let h = videoCapture.previewLayer!.frame.width
NSLog("Print the height and width w:%i, h:%i", w, h);
}
}
答案 0 :(得分:1)
当视图布置其子视图时,您将获得图层的框架:
SELECT
yourTable.Project,
DATEADD(day, numbers.id, yourTable.Start),
yourTable.ResourceA,
yourTable.ResourceB
FROM
yourTable
INNER JOIN
numbers
ON numbers.id >= 0
AND numbers.id <= DATEDIFF(day, yourTable.Start, yourTable.Finish)