我正在申请iPad,只支持横向模式。我有一个UIView
,之后我动态添加UIImageView
作为子视图。但是我的目标是在UIView
的中心添加图片。所以我使用了这段代码,
[imageView setCenter:dynamicMainView.center];
其中imageView为UIImageView
(明显:))和dynamicMainView为UIView
,但最终结果说明似乎在中心,
视觉表现
在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]))];
答案 0 :(得分:20)
视图的center
表示在它的superview的坐标系中。因此,您将图像视图置于错误的坐标系中。 (动态视图的超级视图而不是动态视图)
要在视图B中居中视图A,中心视点A必须是视图B的bounds
矩形的中心。您可以使用(来自内存!)CGRectGetMidX
和CGRectGetMidY
。
答案 1 :(得分:1)
您应该检查图像的大小。图像的帧可能不是UIImageView的帧。将UIImageView的背景颜色设置为[UIColor redColor]
,将clipToBounds设置为true,看看会发生什么。如果有可见的红色部分,则问题出在imageView对象的contentMode属性上。