Nam*_*Nam 0 objective-c uiview ios cgrect
有没有一种简单的方法来获得UIView的绝对点?绝对我的意思是UIView在iPad上相对于1024x768的位置?
我需要一个简单的方法,因为我在UITableView内部的UITutView内部有一个UIButView视图,该视图由一个viewcontroller呈现,该视图控制器是另一个视图控制器的子节点,重复到第五或第六视图控制器.由于这种复杂的设计,我需要UIButton的绝对矩形,所以我可以在"main"viewcontroller上显示一个UIActionSheet.
所以,我们有一个让我们称之为小视图的内部有一定的观点.该点具有相对于其父视图的局部坐标,即小视图.现在,我们想知道,如果它保持在屏幕上的同一位置,该点的坐标是什么,但它将是根视图的一部分.(这有效地为我们提供了相对于整个屏幕的坐标.)
您将计算该点的全局坐标
CGPoint globalCoordinates = [self.smallView convertPoint:localCoordinatesOfThePoint
toView:self.view];
Run Code Online (Sandbox Code Playgroud)
localCoordinatesOfThePoint
也是一个CGPoint结构.
另一种情况
当你用整个屏幕覆盖了根视图时,它有一个大视图(虽然仍然比根视图小),并且这个大视图有一个小视图作为其中的子视图.
您将计算小视图提示的位置
CGPoint originOnScreen = [self.smallView convertPoint:self.smallview.origin
toView:self.view];
Run Code Online (Sandbox Code Playgroud)
self.smallview.origin
是一个相对于大视图的CGPoint.因此,我们计算,如果这一点(它实际上是小视图的左上角)将在根视图内,它的坐标是什么.
抓住
如果根视图不是全屏,而不是根视图,我们需要获得对主窗口的引用,因为这将是我们现在计算坐标的视图.
我们必须
#import "AppDelegate.h"
Run Code Online (Sandbox Code Playgroud)
在我们计算的类中,然后将window属性作为参考视图传递.保证窗口覆盖屏幕,UIWindow是UIView的子类.所以它才有用.
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
CGPoint originOnScreen = [self.smallView convertPoint:self.smallview.origin
toView:appDelegate.window];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10219 次 |
最近记录: |