Ios 将CGRect从视图转换为superview不起作用
我正在创建一个基于棋盘的棋盘游戏。 为了创建棋盘游戏,我做了以下操作:Ios 将CGRect从视图转换为superview不起作用,ios,objective-c,iphone,uistackview,Ios,Objective C,Iphone,Uistackview,我正在创建一个基于棋盘的棋盘游戏。 为了创建棋盘游戏,我做了以下操作: 想象一个棋盘被分成8列白色方块和方块 我创建了一个XIB来表示偶数列。XIB是一个由白色和黑色正方形组成的垂直视图 我创建了第二个XIB来表示奇数列。该XIB是黑白方块的垂直视图 在故事板上,我创建了board视图,并添加了这些列,偶数、奇数、偶数、奇数等,以表示具有8列(每个列有8个正方形)的完整板。所以我有这个: 现在我想得到一个正方形的框架,它位于其中一列的内部,并将其转换为电路板的框架参考 我在MyBoardView
CGRect convertedFrame = [self convertRect:[aSquare frame] toView:self];
self
是电路板视图,aSquare
是self
内部堆栈中的一个正方形。这种转换没有效果convertedFrame
等于[aSquare frame]
我认为问题在于
UIStackView
不是一个视图。如何解决此问题?convertRect:toView:将接收器坐标系中的rect转换为其他坐标系。但是[aSquare frame]不在MyBoardView
坐标系中,而是在superview的坐标系中(即中间的一个视图)。相反,尝试
CGRect convertedFrame = [self convertRect:[aSquare bound] fromView:aSquare];
这里要求MyBoardView
将aSquare
坐标系中的一个Rect转换为其自身坐标系中的一个Rect。如果他们共享任何共同的superview,它将能够做到这一点
顺便说一下,这与:
CGRect convertedFrame = [aSquare convertRect:[aSquare bound] toView:self];
fromView和toView之间的区别只是谁是接收者,谁是参数。(使用convertRect方法时,具有相同的调用方和参数是一个很大的危险信号)。convertRect:toView:将接收器坐标系中的rect转换为不同的坐标系。但是[aSquare frame]不在
MyBoardView
坐标系中,而是在superview的坐标系中(即中间的一个视图)。相反,尝试
CGRect convertedFrame = [self convertRect:[aSquare bound] fromView:aSquare];
这里要求MyBoardView
将aSquare
坐标系中的一个Rect转换为其自身坐标系中的一个Rect。如果他们共享任何共同的superview,它将能够做到这一点
顺便说一下,这与:
CGRect convertedFrame = [aSquare convertRect:[aSquare bound] toView:self];
fromView和toView之间的区别只是谁是接收者,谁是参数。(使用convertRect方法时,具有相同的调用方和参数是一个很大的危险信号)