UIView.center = UIImageView.center但图像视图似乎不在横向中心

时间:2011-12-21 10:19:04

标签: objective-c ios ipad uiview alignment

我正在申请iPad,只支持横向模式。我有一个UIView,之后我动态添加UIImageView作为子视图。但是我的目标是在UIView的中心添加图片。所以我使用了这段代码,

[imageView setCenter:dynamicMainView.center];

其中imageView为UIImageView(明显:))和dynamicMainView为UIView,但最终结果说明似乎在中心,

视觉表现

enter image description here


在UIView中添加UIImageView的完整方法代码是,

-(void) addImageIntoMainDynamicView:(UIImage *) image
{
    [self clearImageFromMainDynamicView];//Always clear Dynamic main view before adding new views
    imageView = [[UIImageView alloc] initWithImage:image];  
        if(imageView.bounds.size.width > dynamicMainView.bounds.size.width || imageView.bounds.size.height > dynamicMainView.bounds.size.height)
        {
            [imageView setFrame:[dynamicMainView bounds]];
        }

        [imageView setCenter:dynamicMainView.center];
        NSLog(@"Image : X = %f and Y = %f", imageView.center.x,imageView.center.y );
        NSLog(@"UIView : X = %f and Y = %f", dynamicMainView.center.x,dynamicMainView.center.y );
        [dynamicMainView addSubview:imageView];
    [imageView release];
}

以上的日志值是,

2011-12-21 21:07:11.850 Map1TestApp[94645:11603] Image : X = 512.000000 and Y = 371.500000
2011-12-21 21:07:11.853 Map1TestApp[94645:11603] UIView : X = 512.000000 and Y = 371.500000

有关为什么不加入中心的任何线索?我做错了吗?

<小时/> 对于未来的观众来说,ANWSER是:

[imageView setCenter:CGPointMake(CGRectGetMidX([dynamicMainView bounds]), CGRectGetMidY([dynamicMainView bounds]))];

2 个答案:

答案 0 :(得分:20)

视图的center表示在它的superview的坐标系中。因此,您将图像视图置于错误的坐标系中。 (动态视图的超级视图而不是动态视图)

要在视图B中居中视图A,中心视点A必须是视图B的bounds矩形的中心。您可以使用(来自内存!)CGRectGetMidXCGRectGetMidY

答案 1 :(得分:1)

您应该检查图像的大小。图像的帧可能不是UIImageView的帧。将UIImageView的背景颜色设置为[UIColor redColor],将clipToBounds设置为true,看看会发生什么。如果有可见的红色部分,则问题出在imageView对象的contentMode属性上。