小编Jus*_*tin的帖子

在 Swift 的 UIKit Dynamics 中,如何定义圆形边界以包含 UIView?

我已经研究了很多,但我在任何地方都能找到的唯一例子是为了定义 UIView 的边界,以便它们在对象的外部相互碰撞/反弹。

示例:一个球击中另一个球,然后它们相互弹开。

但是我想要做的是创建一个圆形视图来包含其他 UIViews,这样包含的边界是一个圆形,而不是默认的正方形。有没有办法实现这一目标?

animation collision-detection uikit-dynamics swift

4
推荐指数
1
解决办法
542
查看次数

使用 Swift 和 CAShapeLayer() 进行遮罩,如何避免在遮罩区域相交时反转遮罩?

这个问题很难用言语表达,但进一步解释情况应该会有所帮助。

使用下面的代码,我实质上是在屏幕上点击一个圆圈,以显示黑色 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)

overlay mask overlap cashapelayer swift

3
推荐指数
1
解决办法
1889
查看次数

CGRectGetMidX()和CGRectGetMidY()发生了什么?

我正在关注Rob Percival的SpriteKit教程视频,这行代码无法编译.似乎语法已经过时了,以获得"mid x"和"mid y"值.有哪些替代CGRectGetMidX()CGRectGetMidY()

CGPoint(x: CGRectGetMidX(self.frame),y: CGRectGetMidY(self.frame))
Run Code Online (Sandbox Code Playgroud)

core-graphics cgrect swift swift3

1
推荐指数
1
解决办法
2483
查看次数