繁体   English   中英

UIView不能在代码或界面生成器中调整大小

[英]UIView not resizing in code or interface builder

我正在创建一个简单的UIView并将其添加到我的主视图中-我也在更改框架,但是不管我尝试什么,它都不会调整视图的大小-它只是将这个巨大的视图集中到我的超级视图中。 在界面生成器中更改视图大小也无效:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view 
                      calloutAccessoryControlTapped:(UIControl *)control
{
    HotelInformationViewController *vc = 
    [[HotelInformationViewController alloc]initWithNibName:@"HotelInformationViewController" 
    bundle:nil control:control];

    [self.view addSubview:vc.view];
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil control:(UIControl *)control
{
  if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) 
  {
    self.view.bounds = CGRectMake(control.frame.origin.x, control.frame.origin.y, 286, 286); //This is the size I want to view to be 286, 286 
  }
  return self;
}

问题是您正在尝试更改范围 ,并且应该更改框架 边界在内部视图中是矩形,在内部视图中应该投影到矩形-一个框架 想象一下300x300尺寸的图片。 如果您在屏幕上看到带有(0,0,100,100)帧的视图,并且想要显示该图片的中央部分,则应将边界设置为(150,150,100,100)。 结果,您将在超级视图的左上角看到大小为100x100的矩形显示的图片中心部分(不调整大小)。

您应该调用self.view.frame = CGRectMake(...) frame是代表视图在其父视图中的位置和大小的属性,并且是您为移动视图或调整视图大小而更改的内容。

bounds属性是视图的坐标系的内部边界,视图的子视图的框架位于其中,并且很少有必要明确设置它)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM