Uiview 与cciviewRapper的主播点问题

Uiview 与cciviewRapper的主播点问题,uiview,cocos2d-iphone,anchor,Uiview,Cocos2d Iphone,Anchor,我在理解和使用主持人方面遇到了一些问题。据我所知,默认的定位点是(.5,.5),它应用对象中心的变换。但是,当我将UIButton放入CCuiviewRapper中时,我注意到缩放它将围绕对象的右侧进行缩放(即,如果从0缩放到1,它将从右向左扩展) 我不确定该怎么做,但通过修补发现,我必须将锚点调整为(0,0),以便在对象中心附近进行缩放。为什么会发生这种情况 此外,虽然我希望将锚点设置为对象的左下角,因为Cocos2d面向(0,0)的是左下角,但它没有并且事实上没有将左上角与包装器的位置值对齐

我在理解和使用主持人方面遇到了一些问题。据我所知,默认的定位点是(.5,.5),它应用对象中心的变换。但是,当我将UIButton放入CCuiviewRapper中时,我注意到缩放它将围绕对象的右侧进行缩放(即,如果从0缩放到1,它将从右向左扩展)

我不确定该怎么做,但通过修补发现,我必须将锚点调整为(0,0),以便在对象中心附近进行缩放。为什么会发生这种情况

此外,虽然我希望将锚点设置为对象的左下角,因为Cocos2d面向(0,0)的是左下角,但它没有并且事实上没有将左上角与包装器的位置值对齐

最后,围绕中心进行缩放的方法是制作锚点(0,0)并使用对象的左上角定位包装器,就像使用UIView坐标放置对象一样。我不确定这种行为是否是在CciiviewRappers中严格使用包装的UIView时发生的,也不知道这是否仅仅是正确的行为,我完全误解了它


有人能澄清和解释吗

包装器也有类似的问题。这里的一个问题是包装器将视图附加到根窗口,而不是控制器的OpenGL视图,这意味着它不会考虑OpenGL视图正在使用的任何自动旋转。代码看起来像是试图补偿UIView和Cocos2d坐标之间的差异,但在锚定点方面似乎做得不好。我最终只是使用UIView坐标,但我确实尝试了另一种设置锚点的方法,使用:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);

在设置视图的变换之前,在ccuiviewRappers中的updateUIViewTransform方法的开始处。这使定位点的行为符合预期,至少对于直接附着到图层的视图是如此

包装器也有类似的问题。这里的一个问题是包装器将视图附加到根窗口,而不是控制器的OpenGL视图,这意味着它不会考虑OpenGL视图正在使用的任何自动旋转。代码看起来像是试图补偿UIView和Cocos2d坐标之间的差异,但在锚定点方面似乎做得不好。我最终只是使用UIView坐标,但我确实尝试了另一种设置锚点的方法,使用:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);
在设置视图的变换之前,在ccuiviewRappers中的updateUIViewTransform方法的开始处。这使定位点的行为符合预期,至少对于直接附着到图层的视图是如此

而不是使用:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);
将锚点设置为右下角,我使用:

uiItem.center = ccp(-uiItem.bounds.size.height/2, uiItem.bounds.size.width/2);
把它放在中间

x和y翻转的原因,我猜是因为我的项目旋转了90。

而不是使用:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height);
将锚点设置为右下角,我使用:

uiItem.center = ccp(-uiItem.bounds.size.height/2, uiItem.bounds.size.width/2);
把它放在中间

x和y翻转的原因,我猜是因为我的物品旋转了90度