Ios 在不可见的矩形之间滚动
请看这张照片: 想象一个滚动视图,其中粉红色的矩形是滚动页面上的每个图像 假设蓝色矩形是不可见的矩形,每个页面上的矩形大小不同 假设黄色矩形是一个静态图像,不在滚动视图中 我想在2和3之间滚动,黄色保持在相同的位置,但是当蓝色矩形移动时它消失了。(你只能在里面看到它) 在rect 3中,您可以看到滚动时黄色发生了什么Ios 在不可见的矩形之间滚动,ios,swift,Ios,Swift,请看这张照片: 想象一个滚动视图,其中粉红色的矩形是滚动页面上的每个图像 假设蓝色矩形是不可见的矩形,每个页面上的矩形大小不同 假设黄色矩形是一个静态图像,不在滚动视图中 我想在2和3之间滚动,黄色保持在相同的位置,但是当蓝色矩形移动时它消失了。(你只能在里面看到它) 在rect 3中,您可以看到滚动时黄色发生了什么 我应该如何将我的图层放置在滚动条上以创建这样的效果?因此,根据评论,您似乎需要一个具有简单视图的滚动视图。 此视图可以是内部有孔的覆盖图,请查看用于制作带孔图层的代码: func
我应该如何将我的图层放置在滚动条上以创建这样的效果?因此,根据评论,您似乎需要一个具有简单视图的滚动视图。 此视图可以是内部有孔的覆盖图,请查看用于制作带孔图层的代码:
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
}
您的描述令人困惑,所以您希望黄色是静态的还是移动的?只需将蓝色的一个设置为滚动视图,否则它将始终位于中心对不起。我也不明白你的建议。正如我所说的,黄色看起来像静态的,粉色和蓝色在移动,但当它们移动时,黄色只在蓝色矩形内出现,所以在页面之间看不到它。它有蓝色矩形的边界,所以基本上你只想在中间有滚动的页面滚动?你有代码吗?很难描述,很抱歉搞混了,我正在尝试制作带有“洞”的照片,这些洞是蓝色的矩形,所以黄色只出现在这些蓝色窗口中。我有一个带有照片的滚动视图,很明显,但我正试图弄清楚上面的视图应该有什么结构。我没有否决你,我投了赞成票,但我不知道你们做了什么,为什么会有黑色层?为什么α是0.85?我不确定你是否理解这个问题。你必须看到粉红色的照片,它们是不同的,它们不可能是恒定的黑色,每个粉红色的矩形是一张不同的照片,里面有一个洞。好的,所以我想你想添加一些东西来覆盖里面的照片,你想到处都有照片吗?你可以删除带有颜色的代码,我甚至可以为你做这件事我已经添加了一个添加图像层的代码,所以如果你要制作一个方法,只需将此图像传递到创建层和返回层,你就可以让它工作了。这个图像层里面有一个洞吗?如果有一个图像在它后面,我只会看到在这个矩形路径内?