Iphone 什么是;“无效帧”;执行变换后的平均值?
我有一个简单的应用程序,允许用户使用平移和收缩手势识别器在屏幕上拖动/缩放图像。苹果API中的常识是,在执行转换后,正如我在缩放方法中所做的那样,帧会变得“无效”。因为即使在执行了变换之后,我仍然不断地使用imageview的帧来计算比例大小和平移距离,并且一切都继续正常工作,所以我想知道帧会变得无效吗 我问这个问题,因为现在我尝试裁剪已经移动和缩放的图像,我使用它的帧值来确定裁剪区域,我得到了有趣的结果。我想知道是否是无效的帧可能是问题所在,或者可能是其他原因。以下是我的代码供您参考:Iphone 什么是;“无效帧”;执行变换后的平均值?,iphone,objective-c,ios,cocoa-touch,core-graphics,Iphone,Objective C,Ios,Cocoa Touch,Core Graphics,我有一个简单的应用程序,允许用户使用平移和收缩手势识别器在屏幕上拖动/缩放图像。苹果API中的常识是,在执行转换后,正如我在缩放方法中所做的那样,帧会变得“无效”。因为即使在执行了变换之后,我仍然不断地使用imageview的帧来计算比例大小和平移距离,并且一切都继续正常工作,所以我想知道帧会变得无效吗 我问这个问题,因为现在我尝试裁剪已经移动和缩放的图像,我使用它的帧值来确定裁剪区域,我得到了有趣的结果。我想知道是否是无效的帧可能是问题所在,或者可能是其他原因。以下是我的代码供您参考: CGR
CGRect croppedRect = CGRectMake(fabsf(self.oldImageView.frame.origin.x), fabsf(self.oldImageView.frame.origin.y), 316, 316);
CGImageRef croppedImageRef = CGImageCreateWithImageInRect(self.oldImageView.image.CGImage, croppedRect);
UIImage *croppedImage = [UIImage imageWithCGImage: croppedImageRef];
CGImageRelease(croppedImageRef);
UIImageView *newImageView = [[UIImageView alloc] initWithImage: croppedImage];
无效帧=有趣的结果 我认为invalid意味着不能保证它的值是错误的,但它可能是错误的。你侥幸使用了这个框架 如果您有已转换的视图,并且需要框架,则可以使用以下代码:
CGRect frame = [[view superview] convertRect:view.bounds fromView:view];
只要它不旋转。如果旋转,“帧”不能表示为CGRect,它只能表示与轴对齐的矩形。您可以使用convertPoint
转换边界的每个角点,如果该信息对您的程序有用的话
或设置未旋转的框架
view.bounds = [view convertRect:newFrame fromView:[view superview]];
在这种情况下,无论如何都不应该使用框架。框架是在superview的坐标系中定义的。在图像的坐标系中指定CGImageCreateWithImageInRect的参数,我怀疑该参数与图像视图的坐标系相同,即使在变换时也是如此。您应该在代码中使用边界来代替框架。或(0.0,0.0)作为原点。我不太清楚你想达到什么目的。你确定它是无效的,而不是无效的吗?这些东西是不同的,这意味着它需要重新绘制,但并不意味着大小不对。我不知道“无效”在这里是什么意思context@Dani:我相信CoDEFRo指的是:我更仔细地阅读了你的代码,我不确定这个答案是否能解决你的问题。但是你应该把它应用到其他使用frame的情况,因为那些代码可能不可靠。谢谢你,那一行代码正是我一直在寻找的。