CGSize类型的值不能在上下文中转换为bool

时间:2014-07-28 07:09:57

标签: ios objective-c cgsize

我正在计算高度和宽度的图像值,并使用if条件检查imagsize是否可用。如果没有,那么我正在为UIImageView大小分配一些值。但是当我检查imagesize in if条件时我得到了这个错误value of type CGSize is not contextually convertible to bool

CGSize imageSize = CGSizeMake(350 * widthRatio, height);

      if(imageSize){

            mmageView=[[UIImageView alloc]init];

            CGRect frame = mmageView.frame; frame.size = imageSize; mmageView.frame = frame;

        }else{

              mmageView=[[UIImageView alloc]initWithFrame:CGRectMake(50,50,150,150)];


        }

3 个答案:

答案 0 :(得分:1)

稍微退一步思考你在这里尝试做些什么。你想检查什么条件?在什么情况下大小会出乎意料?

CGSize是一个结构,而不是一个对象。这意味着,与对象不同,没有办法将其表示为零(或未初始化)对象。在你的情况下,看起来你真正想知道的是尺寸是否有效。假设有效大小不为零,您可以检查大小是否等于零大小({0,0})。您可以使用CGSizeEqualToSize函数执行此操作,该函数返回表示两种大小相等的布尔值。

答案 1 :(得分:0)

CGSize不能成为bool值。您已将CGSize与另一个CGSize进行比较。

您可以使用CGSizeEqualToSize:

if(CGSizeEqualToSize(imageSize, TheSizeYouWantToCompare))
{

}

答案 2 :(得分:0)

因为您的代码以这种方式检查

if(imageSize.height != 0 && imageSize.width != 0){

   mmageView=[[UIImageView alloc]init];

   CGRect frame = mmageView.frame; frame.size = imageSize; mmageView.frame = frame;

}else{
     mmageView=[[UIImageView alloc]initWithFrame:CGRectMake(50,50,150,150)];
}

试试这可能会有所帮助...