【发布时间】:2012-01-16 15:54:21
【问题描述】:
当对 UIView 执行旋转变换时,我无法理解传递给 drawInRect 方法的参数是如何定义的。
举个例子,我有一个 UIView,我旋转了 307 度角。 在 drawInRect 方法中,我记录以下内容: self.frame: {{103.932, 273.254}, {64.3007, 84.3374}} rect(作为参数传递的变量:{{0, 0.102913}, {18, 89}}
问题是根据文档我不应该在矩形之外绘制,但考虑到我应该绘制什么,我的图像不可能适合那里。
谁能向我解释一下在我的 UIView 旋转的情况下我应该如何使用 drawInRect ?
为了更详细地说明我的问题,以下是我的做法:
我有一个滚动视图,里面有一个 contentView(子类)。我在内容视图中添加了我的 UIView。
相关视图由处理程序图像(左下)和主图像(右上)组成。用户应该通过按下处理程序来获取视图,但这不是重点。
UIView的drawInRect方法包含以下内容:
[_image drawInRect:CGRectMake(handlerSize.width, 0, _image.size.width, _image.size.height)];
CGSize size = CGSizeMake(kHandPickerWidth/self.scrollViewScale, kHandPickerHeight/self.scrollViewScale);
[_handPickerImage drawInRect:(0, _image.size.height, size.width, size.height)];
UIViews 对象被添加到内容视图中的 viewWillAppear 中,执行以下操作:
第一次实例化,
然后添加子视图:
然后我设置scrollViewScale参数,
然后我设置frame参数(根据右上角显示的图片(可能会有所不同)
然后我旋转 UIView。
从第三行开始,代码从第 3 行开始执行
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
确保在需要显示时正确设置每个变量。
定义 size 变量的行是为了调整标记的大小,而不考虑滚动视图的 zoomScale 值。
【问题讨论】:
-
如果您想提供更多信息,请编辑您的问题。
标签: cocoa-touch uiview uikit cgaffinetransform