使用 IF 语句设置 UIView 的位置

Posted

技术标签:

【中文标题】使用 IF 语句设置 UIView 的位置【英文标题】:Setting position of UIView using IF statement 【发布时间】:2011-01-10 09:32:57 【问题描述】:

在我正在创建的应用程序中,我有一个名为 AdvancedView1 的 UIView。用户可以在屏幕上拖动视图。用户需要将视图拖到屏幕上的某个位置。如果视图被拖放到某个区域,则视图将“捕捉”到定义的位置。尝试使用 IF AND 语句时,出现错误。有什么建议吗?

“origin”也是在 .h 文件中声明的 CGPoint。

- (void)pan:(UIPanGestureRecognizer *) gesture

if (gesture.state == UIGestureRecognizerStateChanged) 
 
     CGPoint origin = [gesture locationInView:[self superview]];
     [self bringSubviewToFront:[self superview]];
     [self setCenter:origin];            
   
if (gesture.state == UIGestureRecognizerStateEnded) 

    if (origin.x >= 574.0 && origin.x <= 724.0 ) 
    self.frame = CGRectMake(574.0, 184.0, self.frame.size.width,   self.frame.size.height);
    
   

“origin.x >= ....”出现以下错误。

“在非结构或联合的情况下请求成员“x””

【问题讨论】:

【参考方案1】:

origin 变量范围仅限于第一个 if 块,在第二个 if 块中不可见。将其声明移至函数范围:

- (void)pan:(UIPanGestureRecognizer *) gesture

   CGPoint origin = [gesture locationInView:[self superview]];
   if (gesture.state == UIGestureRecognizerStateChanged) 
        
        [self bringSubviewToFront:[self superview]];
        [self setCenter:origin];            
      
   if (gesture.state == UIGestureRecognizerStateEnded) 
   
       if (origin.x >= 574.0 && origin.x <= 724.0 ) 
          self.frame = CGRectMake(574.0, 184.0, self.frame.size.width,   self.frame.size.height);
       
      

【讨论】:

以上是关于使用 IF 语句设置 UIView 的位置的主要内容,如果未能解决你的问题,请参考以下文章

同一位置块中的多个 if 如何交互?

使用 if 语句更改 UIViewcontroller

PHP:使用 if 语句从数组中取消设置

基于地理位置的 PHP IF 语句?

如何使用 if 语句将变量类型设置为特定类型的自定义 tableCell?

如何在jquery中编写if else if语句,其中条件由wordpress选项设置设置