如何知道 ios 中另一个视图 class 中一个视图控制器的图像视图的 x、y 坐标和宽度、高度?
how to know the x,y coordinates and width,height of an imageview of one view controller in another view class in ios?
我正在尝试在另一个 class 中获取视图控制器的图像视图的 x、y 坐标和高度、宽度。但是我失败了……请告诉我我哪里弄错了…… ?
这是我的视图控制器代码和 class 我给视图控制器的代码
查看controller.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
dot1=[[UIImageView alloc]initWithFrame:CGRectMake(145, 30, 20, 20)];
dot1.backgroundColor=[UIColor blackColor];
dot1.layer.cornerRadius=11.0;
dot2=[[UIImageView alloc]initWithFrame:CGRectMake(80, 130, 20, 20)];
dot2.backgroundColor=[UIColor blackColor];
dot2.layer.cornerRadius=11.0;
NSLog(@" (x==%f,y==%f,w==%f,h==%f)",dot1.frame.origin.x,dot1.frame.origin.y,dot1.frame.size.width,dot1.frame.size.height);//here i got the correct output..
}
此代码属于 class view.m.....
- (void)drawRect:(CGRect)rect
{
ViewController*vc=[[ViewController alloc]init];
NSLog(@"(x==%f,y==%f,w==%f,h==%f)",vc.dot1.frame.origin.x,vc.dot1.frame.origin.y,vc.dot1.frame.size.width,vc.dot1.frame.size.height);//but here i got all points 0.
}
注意:我给视图控制器 class 是视图。
当您在 - (void)viewDidLoad
中分配 imageView dot1
和 dot2
时,imageView 框架的所有点都将为 0,这不会在 alloc 和 init 上调用。因此,如果您想获得 imageView 的正确框架,您需要在 init 方法中设置它,这是您从 drawRect:
函数调用的唯一方法。
有一个cgrect并通过框架
CGRect requiredRect;
-(void)initWithRect:(CGRect) rectLocal
{
requiredRect = rectLocal;
}
我正在尝试在另一个 class 中获取视图控制器的图像视图的 x、y 坐标和高度、宽度。但是我失败了……请告诉我我哪里弄错了…… ?
这是我的视图控制器代码和 class 我给视图控制器的代码
查看controller.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
dot1=[[UIImageView alloc]initWithFrame:CGRectMake(145, 30, 20, 20)];
dot1.backgroundColor=[UIColor blackColor];
dot1.layer.cornerRadius=11.0;
dot2=[[UIImageView alloc]initWithFrame:CGRectMake(80, 130, 20, 20)];
dot2.backgroundColor=[UIColor blackColor];
dot2.layer.cornerRadius=11.0;
NSLog(@" (x==%f,y==%f,w==%f,h==%f)",dot1.frame.origin.x,dot1.frame.origin.y,dot1.frame.size.width,dot1.frame.size.height);//here i got the correct output..
}
此代码属于 class view.m.....
- (void)drawRect:(CGRect)rect
{
ViewController*vc=[[ViewController alloc]init];
NSLog(@"(x==%f,y==%f,w==%f,h==%f)",vc.dot1.frame.origin.x,vc.dot1.frame.origin.y,vc.dot1.frame.size.width,vc.dot1.frame.size.height);//but here i got all points 0.
}
注意:我给视图控制器 class 是视图。
当您在 - (void)viewDidLoad
中分配 imageView dot1
和 dot2
时,imageView 框架的所有点都将为 0,这不会在 alloc 和 init 上调用。因此,如果您想获得 imageView 的正确框架,您需要在 init 方法中设置它,这是您从 drawRect:
函数调用的唯一方法。
有一个cgrect并通过框架
CGRect requiredRect;
-(void)initWithRect:(CGRect) rectLocal
{
requiredRect = rectLocal;
}