Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 高效地将自定义UIView裁剪为矩形并缩放以适应屏幕_Objective C_Ios_Views_Translation_Scale - Fatal编程技术网

Objective c 高效地将自定义UIView裁剪为矩形并缩放以适应屏幕

Objective c 高效地将自定义UIView裁剪为矩形并缩放以适应屏幕,objective-c,ios,views,translation,scale,Objective C,Ios,Views,Translation,Scale,形势 我有两种观点: 超级视图(包含:) 子视图(具有自定义DrawRect功能 绘图函数 CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(context, 3.0); CGContextSetFillColorWithColor(context, self.targetColor.CGColor); CGContextAddRect(context, CGRectStandardize(

形势

我有两种观点:

  • 超级视图(包含:)
  • 子视图(具有自定义DrawRect功能
绘图函数

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 3.0);
CGContextSetFillColorWithColor(context, self.targetColor.CGColor);
CGContextAddRect(context, CGRectStandardize(self.target));
CGContextFillPath(context);
因此,这个DrawRect函数只是在子视图坐标系中的某个位置绘制一个矩形(当在子视图中显示时,很可能是屏幕外的)

在我的视图控制器中,我有两个出口。视图控制器将定期调用包含我的数据模型的对象上的函数。此对象将返回一个CGRect,它定义了我要显示的区域。(在子视图坐标系中)

预期行为

因此,我不在乎它是如何完成的,只要它足够有效,可以在20赫兹的频率下调用。但我想确切地说,只有该区域被绘制和缩放,以适应superview。因此,它的平移和缩放(我肯定不是这方面的专家)。这个过程将被反复重复

我到目前为止所做的尝试

我设法使用CGImageRef等工具实现了这一点(因此数据模型可以按预期工作),但没有使用自定义视图。 更改superviews边界将完成转换,但我还没有成功实现缩放。 我希望有一种方法可以通过更改一些视图边界或框架,并定义一些自动调整大小的行为来解决这个问题,但我无法找到方法。 另一件事可能是定义一个函数来构建CGAffineTransformMatrix,然后将其应用于子视图。但正如我所说的,这对我来说是一件新鲜事,我认为有经验的人只需要几分钟就可以为我指出正确的方向


这是你们展示一些技能的绝佳机会;)

当你们使用CGImageRef时,代码是什么样子的?这可能会有所帮助。在这里的代码中,如果子视图与superview具有相同的帧,并且self.target具有原点和大小,那么它似乎可以按原样工作。当你谈论缩放时,我很困惑。您希望self.target在superview中的显示方式如何?如果我使用图像self.scalePyramid.realDisplayPosition=self.lastPositionData;CGImageRef newImageRef=CGImageCreateWithImageInRect(self.image.CGImage,self.scalePyramid.projectedSection);self.imageViewTest.image=[[UIImage alloc]initWithCGImage:newImageRef];如果你能发布一个你期望上面的代码产生的图片-你问题中的原始代码-那将是一个很大的帮助。我仍然不知道你想做什么,我只能想象其他读者也一样,因为除了我之外,没有其他人对此发表过评论。