UIView.center = UIImageView.center, но вид изображения, кажется, не в центре в ландшафте - PullRequest
20 голосов
/ 21 декабря 2011

Я делаю приложение для 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]))];

Ответы [ 2 ]

20 голосов
/ 21 декабря 2011

center представления выражается в системе координат его суперпредставления.Таким образом, вы центрируете изображение в неправильной системе координат.(суперпредставление динамического представления в противоположность динамическому представлению)

Чтобы отцентрировать представление A в представлении B, центральная точка обзора A должна быть центром bounds прямоугольника представления B. Это можно получить с помощью(из памяти!) CGRectGetMidX и CGRectGetMidY.

1 голос
/ 21 декабря 2011

Вы должны проверить размер изображения.Кадр изображения не может быть кадром UIImageView.Установите цвет фона UIImageView на что-то вроде [UIColor redColor] и clipToBounds на true и посмотрите, что произойдет.Если видны красные части, проблема в свойстве contentMode вашего объекта imageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...