标准化CGRect值以使它们介于0和1(单位坐标系)之间的最佳方法是什么?

===============>>#1 票数:14 已采纳

一个非常简洁的方法是:

CGAffineTransform t = CGAffineTransformMakeScale(1.0 / parentRect.size.width, 1.0 / parentRect.size.height);
CGRect unitRect = CGRectApplyAffineTransform(rect, t);

===============>>#2 票数:10

这应该可以解决问题。 您只需要按父视图或图层的宽度/高度划分所有内容。

CGFloat parentWidth = parentView.bounds.size.width;
CGFloat parentHeight = parentView.bounds.size.height;

CGRect rectToConvert = ...;

rectToConvert.origin.x /= parentWidth;
rectToConvert.origin.y /= parentHeight;
rectToConvert.size.width /= parentWidth;
rectToConvert.size.height /= parentHeight;

我们说这些类型和点都在“单位坐标系”中。 您可以在Core Animation Programming Guide中阅读更多相关信息。

===============>>#3 票数:0

这个怎么样:

CGRect rectToConvert;
NSAffineTransform *n = [NSAffineTransform transform];
[n scaleXBy:rectToConvert.size.width 
        yBy:rectToConvert.size.height];
[n invert];

CGRect normalizedRect;
normalizedRect.origin = [n transformPoint:rectToConvert.origin];
normalizedRect.size   = [n transformSize: rectToConvert.size];

CGPoint anyPointINeedToConvert;
CGPoint convertedPoint = [n transformPoint:anyPointINeedToConvert];

我认为这使得它更加清晰,如果你不得不这样做,可以让你以明显的方式处理翻译。

  ask by ORStudios translate from so

未解决问题?本站智能推荐:

2回复

以像素为单位的CGRect?

我几乎想将应用程序中按钮的大小正确地转换为宽度和高度的像素数量。 因此,可以说它的宽度为50,高度为100,在视网膜显示设备上,我希望它返回宽度为100,高度为200。在非视网膜设备上,它应该返回宽度为50,高度为100。高度为100。 而且它在iPad上的工作方式应相同。 无论如
2回复

CGRect助手?

这有点含糊,但是我会尽力而为。 如何使用CGRect和CGRectMake? 是否有助手或可以用来快速找到点的东西? 我已经看过Interface Builder,但是在我看来,没有快速的方法来找到要在CGRect中使用的点。 如果有人能指出我正确的方向,那就太好了。
2回复

CGRect中的presentModalViewController

是否有可能以模态视图被限制在CGRect中包含的空间的方式呈现模态视图控制器? 如果没有,请解释如何复制两个视图之间的交叉解析模态视图转换。 谢谢。
1回复

以编程方式生成元素的样式标准化

我开始以编程方式创建所有元素,并重复了用于样式化字段的大多数代码(例如borderStyle,keyboardType,keyboardAppearance,spellCheckingType等)。 从一个地方做这件事最可接受的方法是什么? 类比将是CSS-我将在一处定义通用样式,并
1回复

ABAddressBook标准化电话号码

我需要将联系人电话号码从用户通讯簿导出到远程服务器。 我的服务器需要一个标准化的电话号码, 例如,如果我获得联系电话:(541)754-3010 归一化的数字应该是:5417543010 我的问题是关于国家/地区代码,我想检测数字是否已经包含国家/地区代码,以及是否自己设置。
1回复

为Core Data标准化或Canonicalize字符串?

我在Core Data上观看了一些WWDC视频,我正计划维护一个规范化的文本属性。 假设我有以下数据: 当我查询我的模型时,我想通过'normalizedString'对其进行排序,以便忽略大小写和Ø(或其他字符)。 我还希望能够运行像“以'o'开头”这样的查询并让它返回上面的3个单
2回复

有没有办法从NSJSONSerialization标准化JSON数据?

从XCode 6.1开始,iPhone 5S,iPhone 6和iPhone 6+模拟器(全部为64位)从以下系统方法返回的数据似乎与32位模拟器(例如,iPhone 5)返回的数据有所不同(键的顺序不同)。模拟器) 密钥顺序的这种差异对我来说造成了一个问题,因为我们计算了该JSON数据
2回复

如何在openCV中标准化图像?

我是openCV的新手,只停留在一点。 我有一个灰度图像,但是我需要将该图像标准化。 例如:我有一个cv :: mat图像,它可能具有包含一些值和每个索引的矩阵。 由于我有灰色图像,每个索引可能只包含1个值。 现在,我需要将每个值除以255。 C ++中的openCV是否有可用
2回复

CGRectIntersectsRect用于多个CGRect

我有8个UIImageView ,必须随机放置。 我为每个imageView生成一个随机的x,y pos,然后我需要检查是否有任何imageViews相交。 如果它们相交,则会再次计算随机x,y pos(do..while循环)。 现在我唯一知道的方法是CGRectIntersectsRe
1回复

如何创建循环CGRect

我正在使用此代码在我的应用程序中创建矩形。 但是我想把它弄圆。 我怎样才能做到这一点。 我正在使用此代码将图像裁剪为矩形: 我是否可以使用火盆曲线来裁剪图像。