2013-10-04 56 views
16

主要目標是能夠給每一行的內容水平滾動。水平的UIScrollView - 使用IB故事板 - 不滾動

我試圖用X 5的代碼要做到這一點,用故事板。

這個問題似乎很簡單,但經過幾個小時的搜索之後,除了一個有點類似的問題之外,我什麼也沒有得到,只是使用了只有編程的方法see here

在IB,我有結構顯示在下面的設計。 View structure

  • 在設置了滾動的含量大小爲{5000,500}無論在IB和在代碼
  • 滾動視圖幀是{0,0} {320,44}
  • 的設置標籤幀設置爲{20,0} {500,44}

我還提供了一個example project in a github repository。該示例還包括在可用的視圖單元之外工作的「正常」滾動視圖。

請說我忽略了一些非常基本的東西。

+0

它是iOS6還是7? –

+0

它在ios 7中。 –

+0

您是否找到了解決方案?我有類似的情況。我的scrollview在UIViewController裏面工作得很完美,但是當我把一個UITableViewCell簡單地放在裏面時不起作用。我使用Xcode 5和iOS 7. – Beto

回答

6

在故事板中激活Autolayout(這是件好事)。 UIScrollView的可滾動大小根據子視圖的約束條件進行計算。

因此,您需要在UIScrollView的UIImageView中添加「頂部,底部,頂部,尾部空間到超級視圖」。它們可以全部設置爲0.

現在,如果您沒有向UIImageView添加任何約束,那麼將使用其intrinsicContentSize大小。

你的約束應該是這樣的:

autolayout constraints

請注意,您還對您的單元格的內容視圖中沒有限制。

當您完成約束時,從您的代碼中刪除所有setContentSize:調用。

+0

這對我有效,但因爲我在我的滾動視圖中使用UIView而不是圖像視圖,所以我需要在我的UIView上設置高度和寬度約束,以便使其工作。 – dmzza

0

我無法訪問您的Storyboard,用我的Xcode 4

首先,你應該UITableViewViewController連接。 UITableViewCell位於您的UITableView之內。這就是爲什麼你應該嘗試改變你的UITableView的設置。連接後,你應該嘗試改變你UITableViewcontentinset這樣的:

[self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 2500, 2500)]; 

如果這也不行,你也可以嘗試改變你的TableView的內容大小。也許你也必須改變你的UIView的大小,才能工作。

+0

我不完全得到你的答案。看起來你在討論在滾動視圖中插入tableview的情況,這不是我要求的情況。 –

+0

然後安裝xcode 5 – Alexis

1

憑藉全新的自動佈局模式,iOS的7似乎已經打破了很多的iOS 6和使用UIScrollView的早期應用。我最近發佈了類似的問題[現在主持人擱置 - 所以你可能無法看到它]其中用戶Lv.BeLeCk找到成功使用:

self.automaticallyAdjustsScrollViewInsets = NO; 
在視圖控制器

保持滾動視圖。把它放在滾動視圖的實例化之後。看看是否有效,如果有效,請提高他的貢獻。

我認爲,根本原因是在實例基於其當前內容UIScrollViews現在更新它們的大小,因爲他們剛剛離開他們單獨地獄之前反對。

爲什麼蘋果想要弄髒我不知道的東西。我仍在等待多線標籤的頂部和底部對齊!

+1

它似乎不工作。我想知道它是否與scrollview是在uitablecellview –

1

確保setContentSizeviewDidLayoutSubviewsscrollViewDidEndZooming:withView:atScale:中被調用。在iOS6中,如果您沒有這些方法中的代碼,則默認行爲可以正常工作,但在iOS7中使用新佈局系統時,它們是需要。它可能會被稱爲不止一次的設置,只要繼續撥打setContentSize即可。

+0

感謝益民。其實,應用程序的功能發生了變化,所以我現在不需要這個功能。不過,我會嘗試在github代碼上提出建議,看看它是如何發展的。我很快就會回到這裏。 –

+0

@Yimin你可以鏈接到文檔,指出上述方法需要放在'viewDidLayoutSubviews'中嗎? – RaffAl

+0

@reecon - 我在回顧了關於SO的許多評論後得出結論。例如HTTP://計算器。COM /問題/ 13439304/UIScrollView的-setcontentsize-斷裂視圖與 - 自動佈局。在撰寫本文時,情況就是這樣,現在可能不一樣了。 –

2

我有同樣的問題,發現消除了滾動的內容視圖,然後再加入它的工作原理:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.label removeFromSuperview]; 
    [self.scrollView addSubview:self.label]; 
    self.scrollView.contentSize = self.label.frame.size; 
} 

這不是最優雅的解決方案,但它爲我工作。

0

我通過IB修復了這種情況。

我必須在「身份值部分 - 用戶定義的運行屬性」內具有等於「大小檢查器 - 查看值」的關鍵字「框架 - 矩形 - CGRectValue」內的相同值。

我希望這對你有所幫助。

0

今天我有同樣的問題。 幾個小時後繼續找到它,它通過將單元格的選擇更改爲無從默認值來解決。 希望它能幫助其他人。

8

另一種替代方法是在定製的UITableViewCell中使用UICollectionView

+1

是的。以下教程可能有幫助。 https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell/ –