ios - 框架与中心矛盾

标签 ios frame center

这怎么可能?以下不应该是真的吗?

v.center == CGPointMake(v.frame.origin.x + v.frame.size.x/2), v.frame.origin.y + v.frame.size.y)/2)

如果是这样,那么您如何解释我得到的这个结果?这是代码:

                 NSLog(@"sv    center: %@",NSStringFromCGPoint(sv.center));
                 NSLog(@"piece center: %@",NSStringFromCGPoint(piece.center));
                 NSLog(@"sv     frame: %@",NSStringFromCGRect(sv.frame));
                 NSLog(@"piece  frame: %@",NSStringFromCGRect(piece.frame));

我省略的 NSLog 语句之间没有代码。我注意到,当我在此之后立即中断时, po sv.superview 和 po piece.superview 都返回同一个对象。总之,这些语句的结果是:

... sv    center: {228.934, 120.684}
... piece center: {124.28, 51.1536}
... sv     frame: {{2.52823, -9.70338}, {122.04, 122.04}}
... piece  frame: {{63.2595, -9.86644}, {122.04, 122.04}}

通过列出的框架进行数学计算,我希望中心是 {62.284115, 56.16831}{92.64975, 56.08678} , 分别。如果我不能像刚才描述的那样从框架中导出中心,我还能遗漏什么?

这是 po sv.superview 的结果:

3 = 0x1f8d0290 <Palette: 0x1f8d0290; frame = (2.017e-05 1.64772e-06; 1024 748); transform = [2.39836, 0, 0, 2.39836, 0, 0]; tag = 42; layer = <CALayer: 0x1f8b9b60>>

这是 po piece.superview 的结果:

$2 = 0x1f8d0290 <Palette: 0x1f8d0290; frame = (2.017e-05 1.64772e-06; 1024 748); transform = [2.39836, 0, 0, 2.39836, 0, 0]; tag = 42; layer = <CALayer: 0x1f8b9b60>>

piece和sv属于同一个类,都是UIImageView的子类。

最佳答案

您的问题可能是您的 transform 属性不是恒等变换。在这种情况下,frame 属性根本没有定义,请参阅 docs :
“警告:如果变换属性不是恒等变换,则此属性的值未定义,因此应忽略。”

关于ios - 框架与中心矛盾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949781/

相关文章:

python - 在 wxpython 中附加/分离两个框架

css - 标题后面的图像和 X 和 Y 上的偏移

html - 如何将此元素置于页面中央?我只能在彩色背景中将文本居中

ios - 如何将字符串转换为 CLLocationDegrees Swift 2

ios - UITableViewCell 子类中 View 的角半径

ios - EMBEDDED_CONTENT_CONTAINS_SWIFT -- pod 安装后出错

view - UIPageViewController 改变大小?

html - 将对象置于 2 个 float 对象下方

iphone - 发送多个文本和图像到电子邮件正文

ios - 从 presentViewController 推送到 UIViewController