ViewController 中主 UIView 内部的 UIView 的位置?

Posted

技术标签:

【中文标题】ViewController 中主 UIView 内部的 UIView 的位置?【英文标题】:Position of a UIView that's inside of the main UIView in a ViewController? 【发布时间】:2015-06-24 21:13:51 【问题描述】:

我正在用 Swift 做一个应用程序项目,我有一个 UIView 在主视图中移动(默认情况下它在 ViewController 中的那个)。

我想知道按下按钮时 UIView 的确切位置(X 和 Y)。

我尝试过这样的事情,但对我不起作用:

let X = pointView.frame.origin.x + pointView.frame.origin.x;
let Y = pointView.frame.origin.y + pointView.frame.origin.y;

let frame = self.view.convertRect(self.view.frame, fromView:pointView)

我现在的代码:

    @IBAction func pressButton(sender: AnyObject) 

    

    override func viewDidLoad() 
        super.viewDidLoad()

        let screenSize: CGRect = UIScreen.mainScreen().bounds
        let screenWidth = screenSize.width
        let screenHeight = screenSize.height

        UIView.animateKeyframesWithDuration(4, delay: 0, options: UIViewKeyframeAnimationOptions.Repeat, animations:  () -> Void in

            UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1.5/4.0, animations:  () -> Void in
                //1
                self.pointView.center = CGPointMake(2, screenHeight-2)
                //2
            )
            UIView.addKeyframeWithRelativeStartTime(1.5/4, relativeDuration: 1/4, animations:  () -> Void in
                self.pointView.center = CGPointMake(screenWidth-2, screenHeight-2)
            )
            UIView.addKeyframeWithRelativeStartTime(2.5/4, relativeDuration: 1.5/4.0, animations:  () -> Void in
                self.pointView.center = CGPointMake(screenWidth-2, 1)
            )
            //3
        , completion: nil)
        //4
    

【问题讨论】:

pointView 是什么?如果 self.view 正在移动,为什么不直接读取他的 frame 属性? Self.view 我认为这是主视图,而 PointView 是我想知道按下按钮时它在哪里的视图,它是正在移动的视图。 【参考方案1】:

然后试试这个:

let frame = pointView.superview?.convertRect(pointView.frame, toView: nil)

有时视图需要他的 superView 来找到它的坐标

动画完成后放置

   UIView.animateWithDuration(1, animations:  () -> Void in
        //animation code
    )  (success) -> Void in
        let frame = self.pointView.superview?.convertRect(self.pointView.frame, toView: nil)
    

【讨论】:

嗨,它不起作用 :( 它告诉我 PointView 参考超级视图的位置,但告诉我原点的位置,而不是移动的。我让 PointView 移动通过边界屏幕,我想知道按下按钮时的位置。谢谢! 你能提供更多代码吗?你在哪里转换框架?当你的框架移动时,你必须放这条线 是的,我用来移动视图的代码是这样的:***.com/a/31011466/4496756 我不这么认为。我必须把它放在哪里? 在我说的完成块中,我编辑了我的答案给你看一个例子

以上是关于ViewController 中主 UIView 内部的 UIView 的位置?的主要内容,如果未能解决你的问题,请参考以下文章

从 viewController 更改 UIColor 以在 UIView 类中使用

如何在 ViewController 及其 NavigationController 上添加 UIview

拖拽uiview推送viewcontroller

Swift - 呈现 UIView(不是 ViewController)

直接从主 ViewController 加载另一个 UIView

从 UIView 类推送到 viewcontroller