我想根据用户的位置计算0-100的百分比" pans"屏幕。如果它位于最底部,则为0%。如果它位于最顶端,100%。我需要这个用于不透明度滑动功能。用户可以通过滑动来改变屏幕的不透明度,其中最底部将屏幕设置为不可见,而最顶部将屏幕设置为最亮,100%。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{
CGPoint translation = [recognizer translationInView:self.view];
NSLog(@"Translation: %f", translation.x);
}
我非常确定我正在考虑将translation.x
转换为感知,但却令人困惑。
答案 0 :(得分:1)
假设您的视图涵盖了整个屏幕,我相信您正在寻找的百分比是
CGPoint location = [recognizer locationInView:self.view];
CGFloat percentage = 1.0 - (location.y / self.view.bounds.size.height);
locationInView
为您提供视图坐标系中的一个点,该点由其bounds
定义,左上角为(0,0)。你希望顶部是100%,因此减去1来翻转它(否则你会在底部获得100%)。
答案 1 :(得分:0)
translation:in:为您提供自触摸开始位置以来的累积移动。听起来你所追求的是相对于视图边界的触摸位置,因此你应该使用location:in:代替。这个值.y除以view.bounds.size.height将给你屏幕下方的相对距离,顶部为0,底部为1,