想象一下滚动视图,其中粉红色的每个都是滚动页面上的图像。
想象一下,每个页面上蓝色的不可见大小不同。
想象一下,黄色矩形是一个静态 =不在滚动视图上的图像。
我想在2和3之间滚动,黄色停留在同一位置,但是当蓝色移动时它会消失。 (你只在里面看到它)
在rect 3中,您可以看到滚动时黄色会发生什么。
如何将我的图层放在滚动条上以创建这样的效果?
答案 0 :(得分:1)
因此,基于评论,您看起来需要具有简单视图的滚动视图。 这个视图可以是内部有一个洞的叠加层,看看用于制作带孔的图层的代码:
func layerWith(img: UIImage) -> CALayer {
let overlay = UIView(frame: CGRect(x: 0, y: 0,
width: UIScreen.main.bounds.width,
height: UIScreen.main.bounds.height))
// Create the initial layer from the view bounds.
let maskLayer = CAShapeLayer()
maskLayer.frame = overlay.bounds
let myImage = UIImage(named: "star")?.cgImage
maskLayer.frame = myView.bounds
maskLayer.contents = myImage
// Create the frame.
let radius: CGFloat = 150.0
let rect = CGRect(x: overlay.frame.midX - radius,
y: overlay.frame.midY - radius,
width: 2 * radius,
height: 2 * radius)
// Create the path.
let path = UIBezierPath(rect: overlay.bounds)
maskLayer.fillRule = kCAFillRuleEvenOdd
// Append the rect to the path so that it is subtracted.
path.append(UIBezierPath(rect: rect))
maskLayer.path = path.cgPath
// Set the mask of the view.
overlay.layer.mask = maskLayer
// Add the view so it is visible.
return overlay
}
还有一些代码可以将子视图添加到scrollview中:
var i: CGFloat = 0
//or width that you want
let width = UIApplication.shared.keyWindow!.frame.width
for item in items {
let frame = CGRect(x: width * i, y: 0, width: width, height: scrollView.frame.height)
let v = UIView(frame: frame)
//here you can add layer from code above to this view before adding it to scrollview
v.layer.addSublayer(layerWith(img:your image goes here))
self.scrollView.addSubview(v)
i += 1
}