2013-11-21 1 views
0

У меня возникла странная ошибка. Я пытаюсь программно инициализировать UIImageView с определенным фреймом и изображением. Мое изображение 60x60, но я пытаюсь изменить его размер до 30x30 на экране, что кажется невозможным.Как установить определенный размер для UIImageView

следующие работы, но показать изображение в 60x60:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; 
    [imgView setContentMode:UIViewContentModeScaleAspectFit]; 
// imgView.frame = CGRectMake(100, 200, 30, 30); 
    imgView.center = CGPointMake(pointTouch.x, pointTouch.y); 
    [self.view addSubview:imgView]; 

И следующий раз ничего не показывает вообще на экране:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; 
    [imgView setContentMode:UIViewContentModeScaleAspectFit]; 
    imgView.frame = CGRectMake(100, 200, 30, 30); 
    imgView.center = CGPointMake(pointTouch.x, pointTouch.y); 
    [self.view addSubview:imgView]; 

Что случилось?

EDIT: для тех, кто имеет такую ​​же проблему, вот рабочий код:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; 
imgView.frame = CGRectMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2, 30, 30); 
imgView.center = CGPointMake(pointTouch.x, pointTouch.y); 
[imgView setContentMode:UIViewContentModeScaleAspectFill]; 
[self.view addSubview:imgView]; 
+0

Если вы не измените 'imgView.center', это будет отображаться? – gWiz

+0

Вы используете автоматическую компоновку? –

+0

@gWiz: нет, не работает – anthoprotic

ответ

1

Начать эксперимент с

imgView.center = CGPointMake(view.bounds.x/2, view.bounds.y/2); 
imgView.bounds = view.bounds; 

и посмотрите, заполняет ли это надзор. Затем попробуйте CGPointMake(pointTouch.x, pointTouch.y) и CGPointMake(30,30) соответственно.

Я предполагаю, что это поведение имеет что-то делать с warning о frame:

Если свойство преобразования не является преобразованием личности, значение этого свойства не определенно и, следовательно, должно быть проигнорировано.

+0

Спасибо за помощь! Это сработало! – anthoprotic

+0

Я отредактировал сообщение для ответа – anthoprotic

0

Вы можете попробовать инициализировать UIImageView с набором кадра, то настройка изображения после этого:

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 30, 30)]; 
[imgView setContentMode:UIViewContentModeScaleAspectFit]; 
imgView.image = [UIImage imageNamed:@"logo.png"]; 
imgView.center = CGPointMake(pointTouch.x, pointTouch.y); 
[self.view addSubview:imgView]; 
+0

не работает. Даже если я удалю строку imgView.center = CGPointMake (pointTouch.x, pointTouch.y); , ничего не добавляется на экран – anthoprotic

Смежные вопросы