2013-01-14 131 views
1

我想在滾動視圖中將圖像放在圖像下方。此代碼導致空白屏幕。我確定它非常簡單(我是一名初學者),但是有人能指出我的錯誤嗎?將內容添加到UIScrollView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = [self.detailItem title]; 
    //self.webView = [[UIWebView alloc] init]; 
    //self.imageView = [[UIImageView alloc] init]; 
    UIImage* image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[self.detailItem imageURL]]]]; 

    self.imageView.image = image; 
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[self.detailItem url]]]]; 

    [self.scrollView addSubview:self.imageView]; 
    [self.scrollView addSubview:self.webView]; 
    self.imageView.frame = CGRectMake(0, 770, 320, 230); 
    [self.webView setFrame:CGRectMake(0, 0, 320, 770)]; 
    CGFloat scrollViewHeight = 1000.0f; 
    /* 
    for (UIView* view in scrollView.subviews) 
    { 
     NSLog(@"%f",view.frame.size.height); 
     scrollViewHeight += view.frame.size.height; 

    } 
    */ 
    [scrollView setContentSize:(CGSizeMake(320, scrollViewHeight))]; 
    NSLog(@"%f", self.imageView.frame.size.height); 
    NSLog(@"%f", self.webView.frame.size.height); 

    [self configureView]; 
} 

從.H

@interface DetailViewController : UIViewController <UIScrollViewDelegate>{ 
    UIScrollView* scrollView; 
} 

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; 

@property (strong, nonatomic) id detailItem; 
@property (nonatomic, strong) UIWebView *webView; 
@property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel; 
@property (nonatomic, strong) UIImageView *imageView; 
@end 
+0

在您添加子視圖記錄您的scrollviewHeight值,以確保該值大於0 – propstm

+0

是它是零。任何想法爲什麼會這樣?子視圖的高度不是零。 – rfgordan

+0

嘗試NSLog同時scrollView.subviews和scrollViewHeight,以確保所有作品,因爲它應該到目前爲止。 – Tom

回答

0

你被重新初始化這些值輸給你的伊娃原來的引用,你是不是設置一個框架,使自己的身高值是0,這就是爲什麼你的滾動視圖沒有得到任何較大:

self.webView = [[UIWebView alloc] init]; 
self.imageView = [[UIImageView alloc] init]; 

試其更改爲僅初始化如果該值是零

if(self.webView == nil){ 
    self.webView = [[UIWebView alloc] init]; 
} 
if(self.imageView == nil){ 
    self.imageView = [[UIImageView alloc] init]; 

} 

//set frames for subviews 
UIImage *remoteLoadedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[self.detailItem imageURL]]]; 
[[self.imageView setFrame:CGRectMake(0,0,remoteLoadedImage.size.width, remoteLoadedImage.size.height)]; 
[self.imageView.image = remoteLoadedImage]; 
//i'm setting an arbitrary height and width 
[self.webView setFrame:CGRectMake(0,self.imageView.frame.size.height+5, 320, 450)]; 
在循環
+0

好吧,我可以通過設置任意幀高來獲得滾動視圖,但內容(webview和imageview)不會出現。 NSLog告訴我,即使設置了框架,它們仍然沒有高度。 – rfgordan

+0

好的,用你修改你的代碼的方式,你需要檢查你的imageview和webview是否已經被初始化,然後在把它們添加到滾動視圖之前設置這些項目的框架。這應該允許您遍歷scrollview子視圖來查找高度並正確獲取累積高度。 – propstm

+0

它的作品!有沒有辦法在設置框架之前獲取網頁的長度? – rfgordan

0

在給定的代碼,你不初始化self.scrollView。

+0

通過界面生成器添加的東西是否已經初始化?在任何情況下,初始化它都不會改變任何東西。 – rfgordan

+0

是的,他們是。你連接了插座嗎? –

+0

是的,我確實連接了它們。 – rfgordan