2010-04-22 3 views
3

У меня есть следующая проблема: я генерирую subviews UIView в UIScrollView, включая UIImageViews.Установить размер UIImageView?

NSArray *bilder = [[NSArray alloc] initWithObjects:@"lol.jpg", @"lol2.jpg", nil]; 
NSArray *added = [[NSMutableArray alloc] init]; 
UIImageView *tmpView; 

for (NSString *name in bilder) { 
    UIImage *image = [UIImage imageNamed:name]; 
    tmpView = [[UIImageView alloc] initWithImage:image]; 
    tmpView.contentMode = UIViewContentModeScaleAspectFit; 
    tmpView.frame = CGRectMake(0, 0, 300, 300); 

    [added addObject:tmpView]; 

    [tmpView release]; 
} 

CGSize framy = mainFrame.frame.size; 

NSUInteger x = 0; 

for (UIView *view in added) { 
    [mainFrame addSubview:view]; 
    view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width); 
} 

mainFrame.scrollEnabled = YES; 
mainFrame.pagingEnabled = YES; 
mainFrame.contentSize = CGSizeMake(framy.height * [added count], framy.width); 
mainFrame.backgroundColor = [UIColor blackColor]; 

Я получаю имена файлов изображений из массива. теперь я хочу изменить размер изображения на определенный размер, но это не сработает. любой совет?

благодарит + касается

ответ

4

UIImage отсутствует setSize: метод NSImage, но this post, кажется, добавить метод scaleToSize:, используя категорию на UIImage.

+0

Я попробовал это, работа по изменению размера изображения, но образбайт остается в полноэкранном режиме. как изменить размер изображения на размер измененного изображения? – Tronic

+0

Вы изменяете размер изображения до того, как вы назовете '[[UIImageView alloc] initWithImage: image]'? Как я прочитал документацию для 'initWithImage:', это должно привести к тому, что 'UIImageView' будет соответствовать размеру изображения. – Isaac

+0

Да, на самом деле я делаю UIImage * image = [UIImage imageNamed: name]; затем UIImage * smallImage = [image scaleToSize: CGSizeMake (100,100)]; а затем я выделяю UIIMageView с помощью tmpView = [[UIImageView alloc] initWithImage: smallImage]; , но изображение просматривается в полноэкранном режиме, проверяется, что с набором фона! – Tronic

4

Изменить tmpView.frame использовать новый CGRect:

tmpView.frame = CGRectMake(tmpView.frame.origin.x, 
          tmpView.frame.origin.y, 
          newWidth, 
          newHeight); 
+0

хорошо, что 'на самом деле тот же код, который я использовал раньше, не так ли? не работает :( – Tronic

+0

Попробуйте использовать CGRectOffset, чтобы просто сдвинуть рамку вниз, что должно сохранить исходный размер неповрежденным. Что-то, что может помочь, - это временно установить цвета фона всех просмотров, чтобы убедиться, что все, кроме UIImageView показывает, где вы хотите. – MrHen

+1

Попробуйте использовать [[UIImageView alloc] initWithFrame: ...] и установите изображение позже. Это должно [не влиять на кадр представления] (http://developer.apple.com/library /ios/#DOCUMENTATION/UIKit/Reference/UIImageView_Class/Reference/Reference.html#//apple_ref/occ/instp/UIImageView/image). –

0

Что я вижу:

view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width); 

Но если вы посмотрите на CGRectMake ...

Declaration: CGRect CGRectMake (
    CGFloat x, 
    CGFloat y, 
    CGFloat width, 
    CGFloat height 
); 

Вы установили g значение X, а не значение Y. Я ожидаю, основываясь на своем более позднем вызове:

mainFrame.contentSize = CGSizeMake(framy.height * [added count], framy.width); 

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

Предлагайте:

view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width); 

в

view.frame = CGRectMake(0,framy.height * x++, framy.height, framy.width); 
+0

это ландшафтный режим, они появляются бок о бок, но полноэкранный. хочу, чтобы он был в полноэкранном режиме, я хочу 300x300! – Tronic

+0

Затем он приводит меня к: mainFrame.contentSize = CGSizeMake (framy.height * [добавленный счет], framy.width); Не хотите ли вы: mainFrame.contentSize = CGSizeMake (framy.height, framy.widtht * [добавленный счет]; – gnasher

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