我已经研究了很多,但我在任何地方都能找到的唯一例子是为了定义 UIView 的边界,以便它们在对象的外部相互碰撞/反弹。
示例:一个球击中另一个球,然后它们相互弹开。
但是我想要做的是创建一个圆形视图来包含其他 UIViews,这样包含的边界是一个圆形,而不是默认的正方形。有没有办法实现这一目标?
这个问题很难用言语表达,但进一步解释情况应该会有所帮助。
使用下面的代码,我实质上是在屏幕上点击一个圆圈,以显示黑色 UIView 下方的内容。当我点击时,我将 CGPoint 记录在数组中以跟踪点击的位置。对于我随后进行的每次点击,我都会删除黑色 UIView 并从我正在跟踪的 CGPoints 数组中重新创建每个点击点,以便创建一个包含所有先前点的新蒙版。
结果是这样的:
我相信您已经可以发现我在问什么...如何避免在圆圈相交的地方遮罩反转?感谢您的帮助!
这是我的代码供参考:
class MiniGameShadOViewController: UIViewController {
//MARK: - DECLARATIONS
var revealRadius : CGFloat = 50
var tappedAreas : [CGPoint] = []
//Objects
@IBOutlet var shadedRegion: UIView!
//Gesture Recognizers
@IBOutlet var tapToReveal: UITapGestureRecognizer!
//MARK: - VIEW STATES
override func viewDidLoad() {
super.viewDidLoad()
}
//MARK: - USER INTERACTIONS
@IBAction func regionTapped(_ sender: UITapGestureRecognizer) {
let tappedPoint = sender.location(in: view)
tappedAreas.append(tappedPoint) //Hold a list of all previously tapped points
//Clean up old …Run Code Online (Sandbox Code Playgroud) 我正在关注Rob Percival的SpriteKit教程视频,这行代码无法编译.似乎语法已经过时了,以获得"mid x"和"mid y"值.有哪些替代CGRectGetMidX()和CGRectGetMidY()?
CGPoint(x: CGRectGetMidX(self.frame),y: CGRectGetMidY(self.frame))
Run Code Online (Sandbox Code Playgroud)