UIView.center = UIImageView.center, но изображение, похоже, не находится в центре пейзажа
Я делаю приложение для iPad, будет поддерживаться только ландшафтный режим. У меня есть UIView
, а затем я динамически добавляю UIImageView
в качестве подвью. Однако моя цель - добавить изображения в центр UIView
. Поэтому я использовал этот код,
[imageView setCenter:dynamicMainView.center];
где imageView - UIImageView
(Очевидный:)) и dynamicMainView UIView
. Однако конечный результат доцента, кажется, находится в центре,
Визуальное представление
![enter image description here]()
Полный код метода для добавления UIImageView в UIView,
-(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
Есть ли подсказки о том, почему он не добавляет в центр? Я что-то делаю неправильно?
ДЛЯ БУДУЩЕГО ПРОСМОТРА АНАЛИЗ БЫЛ:
[imageView setCenter:CGPointMake(CGRectGetMidX([dynamicMainView bounds]), CGRectGetMidY([dynamicMainView bounds]))];
Ответы
Ответ 1
center
представления выражается в системе координат viewview. Таким образом, вы центрируете изображение в неправильной системе координат. (просмотр динамического представления в противоположность динамическому представлению)
В центре обзора A в виде B, центральная точка зрения A должна быть центром прямоугольника bounds
вида B. Вы можете получить это используя (из памяти!) CGRectGetMidX
и CGRectGetMidY
.
Ответ 2
Вы должны проверить размер изображения. Рамка изображения может не быть рамкой UIImageView. Задайте цвет фона UIImageView примерно так: [UIColor redColor]
и clipToBounds - true и посмотрите, что произойдет. Если есть красные части, которые видны, проблема связана с свойством contentMode вашего объекта imageView.