2010-04-22 167 views
3

我有以下問題:我在包括UIImageViews的UIScrollView中生成子視圖UIView。設置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]; 

我從數組中獲取圖像文件名。現在我想調整imageview的大小,但它不起作用。有什麼建議?

感謝+視

回答

4

UIImage缺乏的NSImagesetSize:方法,但this post似乎增加使用上UIImage一個類別scaleToSize:方法。

+0

我試過這個,圖像大小調整工作,但imagebiréw保持全屏。我怎麼能調整圖像大小調整大小的圖像? – Tronic 2010-04-23 07:44:51

+0

在調用'[[UIImageView alloc] initWithImage:image]'之前,您是否調整了圖像大小?我閱讀'initWithImage:'的文檔的方式,應該使'UIImageView'匹配圖像大小。 – Isaac 2010-04-23 08:58:37

+0

是的,其實我使UIImage *圖像= [UIImage imageNamed:名稱];然後UIImage * smallImage = [image scaleToSize:CGSizeMake(100,100)];然後我用tmpView = [[UIImageView alloc] initWithImage:smallImage]分配UIIMageView; 但imageview保持全屏,使用背景顏色設置! – Tronic 2010-04-23 09:12:15

4

變化tmpView.frame使用一個新的CGRect:

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

好吧,那'我之前使用的代碼實際上是一樣的,不是嗎?也不能工作:( – Tronic 2010-04-22 20:08:36

+0

嘗試使用CGRectOffset來簡單地移動框架,這應該保持原始大小不變,也可能會幫助您臨時設置所有視圖的背景顏色,以確保除UIImageView正在顯示你想要的位置 – MrHen 2010-04-22 20:21:55

+1

嘗試使用[[UIImageView alloc] initWithFrame:...]並稍後設置圖像,這應該[不會影響視圖的框架](http://developer.apple.com/library /ios/#DOCUMENTATION/UIKit/Reference/UIImageView_Class/Reference/Reference.html#//apple_ref/occ/instp/UIImageView/image) – 2011-07-19 14:58:58

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 2010-04-22 20:12:40

+0

然後它導致我: mainFrame.contentSize = CGSizeMake(framy.height * [added count],framy.width); 你不想要: mainFrame.contentSize = CGSizeMake(framy.height,framy.widtht * [added count]; – gnasher 2010-04-22 20:48:29