2015-04-12 57 views
1

我在這裏有一個奇怪的問題。我有一個在界面生成器中設置的UIScrollView。我通過一種稱爲setupScrollView這是如下內容添加到它:設置UIScrollView。如果在viewDidLayoutSubviews中調用,UIImageView圖像會變形。圖像包括

-(void)setupScrollView { 

    UIView *content = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.scrollView.frame.size.width*[self.stickers count], self.scrollView.frame.size.height)]; 
    for(int i=0; i<[self.stickers count]; i++){ 

     UIImageView *imageView= [[UIImageView alloc] initWithFrame:CGRectMake(i*self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)]; 
     MySticker *sticker = self.stickers[i]; 
     imageView.image=sticker.image; 
     [content addSubview:imageView]; 
     NSLog(@"scroll view width is %f",self.scrollView.frame.size.width); 
     NSLog(@"ImageView width is %f", imageView.frame.size.width); 
    } 



    self.scrollView.contentSize=CGSizeMake(content.frame.size.width ,content.frame.size.height); 
    [self.scrollView addSubview:content]; 




} 

現在我稱之爲viewDidLayoutSubviews這種方法,因爲我需要的意見,使用的界面生成器設置的約束條件之後,首先重新定位。這一切工作正常,但我的圖像滾動視圖略有扭曲的鋸齒狀邊緣,有貼紙/聊天圖像黑色輪廓,所以它是相當明顯的。但是,如果我將[self setupScrollView]放在viewDidLoad方法中,圖像將不會失真並且看起來非常清晰。示例圖片:

enter image description here

不知道爲什麼它是這樣做的。任何人都可以給我一些指點,說明我可能做錯了什麼?

回答

1

如果它在viewDidLoad中正常工作,請嘗試在viewWillLayoutSubviews方法中調用setupScrollView方法。 同時檢查setupScrollView將被調用多次以避免添加重複的情況。

+0

如果將其放置在viewWillLayoutSubviews中,仍然失真。如果我能得到正確的內容大小,我可以保留viewDidLoad中的方法,但問題是內容大小尚未定義。有沒有其他方法可以計算內容大小,同時將viewScrollView保留在viewDidLoad中? – KexAri

+0

雖然等待,似乎setupScrollView被稱爲不止一次.... – KexAri

+0

這是它!你是個天才。它不止一次地添加了滾動視圖。難怪它被扭曲了。我在裏面放了一個BOOL標誌,所以它只會做一次,現在沒關係。這讓我頭撞了6個多小時。非常感謝! – KexAri

相關問題