ios - 如何知道 UIView 在屏幕左侧或右侧的当前位置?

标签 ios objective-c uiview


我正在制作一个可拖动的 UIView,它可以在屏幕上的任何位置移动。我使用以下代码将其设置为在 3 秒后自动隐藏其 1/2 部分:

-(void)hidePart {
    if (self.frame.origin.x > 0) {
        [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{
        self.frame = CGRectMake(0 - self.frame.origin.x - self.frame.size.width/3, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
        } completion:^(BOOL finished) {
        }];
    }
}

如果我将 UIView 放在屏幕左边缘附近,它就可以正常工作。但如果我拖动它并将其放在右边缘附近,3 秒后它就会跑到左侧并走出屏幕。我知道这是因为我在 3 秒延迟后将其帧设置为:(当前 X - 帧),并且在这种情况下当前 X 非常大。

我想知道怎样才能让它变得更好?我的意思是,如果这个 UIView 更接近左边缘,它会移到左侧,如果它更接近右边缘,它会移到右侧?

最佳答案

首先,您应该认识到可拖动 View 位于 View 的哪个部分,左侧还是右侧。

CGFloat pointLeft = CGRectGetMidX(self.frame);
BOOL isLeft = CGRectGetMidX(self.frame) < kScreenWidth/2;

然后,根据它向左或向右设置 View 的动画。 你已经完成了左边。

关于ios - 如何知道 UIView 在屏幕左侧或右侧的当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981894/

相关文章:

ios - Swift:UIButton 不可点击的重叠 View

php - 如何使用 Alamofire 将图像从 ios 上传到服务器

ios - 自定义标注手势识别

ios - 如何在 UIDocumentPickerViewController 中更新框架大小的样式

objective-c - 如何让NSWindow在打开后立即接受mouseMove事件?

ios - 如何从 NSString 中删除十六进制字符

objective-c - NSMenuItem 高度?

iOS - 从 AppDelegate 监控应用程序流

ios - 如何在 UIView 上设置条件

android - 在 NativeScript Angular 中,为什么这些图标不居中显示?