【问题标题】:how to pass cgrect as parameter and how to get cgrect as a return type in ipad如何将 cgrect 作为参数传递以及如何在 ipad 中将 cgrect 作为返回类型
【发布时间】:2011-04-26 10:48:13
【问题描述】:

大家好,我要问的是基本问题,我搜索了很多链接来寻找我的问题,但没有一个问题没有给出确切的结果。这是我的问题:

我想传递 rect 值并使用一些转换返回相同的类型,因为我写了一种方法,但它给了我错误,我知道它可能在语法上是错误的,请更正下面的代码

-(void)viewDidLoad{
    CGRect testRect=getNewRect(self.view.frame);
}

我自己的方法在这里

CGRect getNewRect(CGRect normalRect){
    //some transformation
    return tranfermedrect;
}

提前给我你的建议谢谢..

【问题讨论】:

  • 如果我要更改方法名称,则消息类似于“getNewRect 的冲突类型”,然后错误提示我“最新方法名称的冲突类型”
  • 感谢您的早日重播...是按语法编写...
  • getNewRect 方法的声明是什么样子的?
  • 你能展示一下你的转变吗?
  • 您是否在头文件中声明了CGRect getNewRect(CGRect normalRect) 函数?

标签: iphone objective-c cgrect


【解决方案1】:

使用下面一行你会解决你的问题。

[self yourFunction:[NSValue valueWithCGRect:rectFrame]];

上面是简单的方法调用,在 Objective-C 中你不能发送 CGRect 作为参数。所以你必须将 CGRect 转换成 NSValue。

在被调用的函数中,你已经从 NSValue 获得了 GGRect

yourView.frame = [rect CGRectValue];

希望对你有帮助。

【讨论】:

  • '在 Objective-C 中,您不能将 CGRect 作为参数发送' 这不是真的。有关接受 CGRect 参数的方法示例,请参阅 UIView 类参考或返回 CGRect 值的方法。
  • @Bavarious,好的...先生,然后请告诉我如何通过函数发送 CGRect 作为参数????????
  • 如该问题的其他答案中所述。
【解决方案2】:

试试下面的

-(void)viewDidLoad{
    CGRect testRect= [self getNewRect:self.view.frame];
}

-(CGRect) getNewRect:(CGRect) normalRect{

    //some transformation
    return tranfermedrect;
}

在.h文件下面添加

  -(CGRect) getNewRect:(CGRect) normalRect ;

【讨论】:

  • 在 Obj-C 类中使用 C 函数没有问题。
  • 他为什么不这样做呢?此外,他的代码中没有任何特定于 C++ 的内容。
  • @kubi , @Bavarious :你们是对的,我从我的回答中删除了这个
  • 感谢您的重播,我尝试了这个...但如果想在日志中打印 testRect,则会出现“1 nsstringFromCGrect 的参数不兼容”之类的错误
【解决方案3】:
-(void)viewDidLoad{
    CGRect testRect= [self getNewRect:self.view.frame];
    NSLog(@"New rect %@",NSStringFromCGRect(testRect));
}

-(CGRect) getNewRect:(CGRect) normalRect{

    //some transformation
    return tranformedRect;
}

看看这是否有效

【讨论】:

  • 有时给我错误...我将 testRect 声明为不在 viewDidLoad 中的状态
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 2021-04-02
  • 2011-10-01
相关资源
最近更新 更多