ios - 如何在某个 CGPoint 处创建 UIView?

标签 ios swift uiview cgpoint

我需要能够在某个 CGPoint 处创建和显示 UIView。

到目前为止,我有一个作为 subview 添加到主视图的手势识别器。

然后我以编程方式创建一个 UIView,并将它的 x 和 y 坐标设置为我从手势识别器获得的 CGPoint。

我能够创建它并将其添加为 subview ,但创建的 UIView 的位置与 TAP 的位置不同。

AnimationView 子类 UIView

我的代码如下

    tappedLocation = gesture.locationInView(self.view)

    var animationImage: AnimationView = AnimationView()
    animationImage.frame = CGRectMake(tappedLocation.x, tappedLocation.y, 64, 64)
    animationImage.contentMode = UIViewContentMode.ScaleAspectFill
    self.view.addSubview(animationImage)
    animationImage.addFadeAnimation(removedOnCompletion: true)

我做错了什么吗?

最佳答案

您的问题是,您希望 View 的中心是您单击的点。此时,UIView 的左上角就是您触摸的点。所以试试看:

 var frameSize:CGFloat = 64
 animationImage.frame = CGRectMake(tappedLocation.x - frameSize/2, tappedLocation.y - frameSize/2, frameSize, frameSize)

如您所见,现在您之前设置了宽度和高度,并调整了 x 和 y,以便 View 的中心是您触摸的点。

但更好的方法是,就像 Rob 在他的回答中提到的那样,将 View 的中心设置为您所在的位置。这样,您只需设置框架的大小并使用 CGSizeMake 而不是 CGRectMake 方法:

animationImage.frame.size = CGSizeMake(100, 100)
animationImage.center = tappedLocation

关于ios - 如何在某个 CGPoint 处创建 UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660141/

相关文章:

iOS GCD 用于 UITableView

ios - 如何从电话号码字符串中删除几个数字 - Swift

iOS : How to add drop shadow and stroke shadow on UIView?

ios - 如何在每天的特定时间发送 localNotification,即使那个时间已经过去了?

ios - UIView不可见时截图

ios - 从 UIView 层次结构创建 UIImage 时背景透明度丢失

ios - 防止触摸发生在 View 后面?

ios - 如何更改标准 UITabBarItem 上的文本 'More'

ios - 检查所有数组元素是否匹配值

ios - 从 ViewController 类更改自定义 View 类属性