我有我的所有控件在界面生成器(許多標籤,按鈕等)佈局。我如何將它們全部放入界面生成器的滾動視圖中,以便我可以獲得更多空間並能夠上下滾動以顯示更多控件?我必須以編程方式執行此操作嗎?如何將UIScrollView添加到Interface Builder?
回答
打開包含所有控件和標籤等的視圖(在Interface Builder中)。全選。然後在編輯器菜單下,選擇嵌入,然後選擇滾動視圖。
注意:在舊的Xcode版本中,這是在佈局菜單下,然後嵌入對象...(滾動視圖)。
選擇您想要放入滾動視圖中的所有對象並轉到佈局菜單,選擇「嵌入對象」並選擇「滾動視圖」。
我首選的方案,在這裏你不需要硬編碼的contentSize的大小:
注意:您可能能夠避免這種源代碼部分使用這裏的伎倆:https://stackoverflow.com/a/11239123/153422 - 雖然我還沒有嘗試過。
這一招的其餘部分...你仍然需要使用反正
全部移動控制到一個單一的UIView(在IB:全選,然後去佈局>嵌入對象中。 ..>查看)
接管該單一的UIView使用一個IBOutlet屬性的源代碼(見下文)
源代碼,而不是接口生成器(IB是打破了這裏,它有錯誤,它錯誤地設置了UIScrollView的原點 - 它試圖將視圖居中。蘋果從來沒有打算檢查它的基本錯誤,感嘆):將單個UIView移動到UIScrollView(見下面的代碼)。
使用sizeThatFits來「自動」設置正確的大小。
代碼(StackOverflow上不會讓我把代碼編號列表內的感嘆。)
頭文件
/** outlet that you hook up to the view created in step 1 */
@property(nonatomic, retain) IBOutlet UIView *masterView;
類文件:
/** inside your viewDidLoad method */
[scrollview addSubview: masterView]; // step 3
scrollView.contentSize = [masterView sizeThatFits:CGSizeZero]; // step 4
.. 。儘管我最近沒有檢查過它,IIRC它同時適用於2.x和3.x
該解決方案效果很好。感謝發佈 – JoshHighland 2010-10-07 00:21:24
這也適用於4.x - 我仍然在應用程序中使用它,沒有任何問題。 – Adam 2010-10-23 17:00:44
這適用於iOS 4.2上的iPhone。別忘了UIScrollView的高度應該與ViewController的頂級UIView相同或相等。我一直在擺弄設置,忘記把它改回來。感到困惑,因爲它似乎仍然反彈到錯誤的位置。 – 2010-12-07 21:43:41
它很容易:
首先爲您的視圖添加一個滾動視圖。 更改滾動視圖的大小(例如,使其長700像素)。 開始放置您的控件 當您想要在較低(不可見)部件中放置/編輯控件時,請選擇滾動視圖並將Y開始位置更改爲-300。 Voila。 編輯後將Y開始位置設回0或其它值。
或者,您可以增加尺寸,然後再減小尺寸。滾動會很好,但我並不感到驚訝,它沒有實現 – Casebash 2010-09-16 11:45:34
如果你這樣做,那麼你還必須手動(重新)設置滾動視圖的「框架」的大小爲頁面的視圖大小(視圖門戶)和將「contentSize」設置爲總內容大小。後者默認爲0,0,如果contentSize不大於frame.size,則不會發生滾動。這是另外一個好策略,非常感謝! – 2012-03-16 18:19:50
雖然這個問題很老了,我會建議一個解決辦法,我發現我有同樣的問題,沒能找到多少幫助那裏:
當IB,如果你想將物體420像素之外,只要在選擇所有狀態欄,上欄,其中包含與所有對象滾動視圖查看底部欄的未指定的肯定自己。這樣,您就可以手動調整屏幕大小(對於視圖)。然後,您可以按照調整滾動查看^h值,可以使用所有其他的對象,與他們一起工作Ximonn的意見,然後,撤消更改爲^h值,然後設置需要的吧。
我一直在尋找這幾天,我終於碰到這個網站來了,對我工作的解決方案。
基本上你有你在這一個UIScrollView客體主視圖。然後是另一個內容視圖,其中包含您的所有內容。然後將內容視圖添加到滾動視圖。然後最後將滾動視圖的內容大小設置爲內容視圖的大小。
重要的小東西。 要在UIScrollView中滾動大的子視圖(例如UIImageView),請記住,對於此子視圖,取消選中InterfaceBuilder - > View窗口中的「User Interaction Enabled」複選框。或者以編程方式進行。
subview.userInteractionEnabled = NO;
否則這個子視圖將疊加在屏幕上沒有任何影響。
我知道,這個線程是一個年紀大一點......但有人能找到它的谷歌,它的HIGHT排名。 我寫了這個小輔助方法來完成這項工作:
- (void)addSubview:(UIView *)theSubView toScrollView:(UIScrollView *)theScrollView
{
[theScrollView addSubview:theSubView];
theScrollView.contentSize = theSubView.bounds.size;
}
你只需要在標題中聲明兩個IBOutlet中的(例如,contentView
和scrollView
),並調用這樣的方法,等。無論您想加載UIView
與你的源代碼一個UIScrollView
:
[self addSubview:contentView toScrollView:scrollView];
我把它叫做在viewDidLoad中
這種方法功能的iOS
我不知道,如果這只是我,但我試圖按照每個這裏的其他答案的指示,沒有一次成功。沒有一個答案包含了所有需要的東西,我猜每個答案都假設我們知道要做一些事情,所以就把這一部分留下來。我終於想通了與red artisan.所以......我在這裏上市的所有必要的步驟獲得的幫助這項工作:
InterfaceBuilder下,添加一個視圖,然後添加你控制它(或如果您的控件已經存在於主視圖中,則可以選擇所有控件,然後轉到編輯器|嵌入|視圖,然後拖動該新視圖,使其全部位於主視圖之外)。此視圖可以是任何你喜歡的尺寸。
在InterfaceBuilder中,將一個滾動視圖添加到您的主視圖中,並調整它以佔據整個主視圖。
將下面列出的代碼添加到您的UIViewController標題和類文件中。
在InterfaceBuilder中,將包含控件的視圖掛接到文件所有者中的'contentView'。將Scroll View連接到文件所有者的'scrollView'。
頭文件:
@interface MyViewController : UIViewController @property(nonatomic, retain) IBOutlet UIScrollView *scrollView; @property(nonatomic, retain) IBOutlet UIView *contentView;
類文件:
@synthesize scrollView, contentView; - (void)viewDidLoad { [super viewDidLoad]; [self.scrollView addSubview:self.contentView]; self.scrollView.contentSize = self.contentView.bounds.size; } - (void)viewDidUnload { self.scrollView = nil; self.contentView = nil; [super viewDidUnload]; }
選擇的答案很適合的Xcode 3
然而,Xcode的4,菜單已被重新稍微安排一下。
要做到在Xcode 4的相同選擇你的意見,然後使用:
編輯>嵌入>滾動查看
- 1. 如何將自定義UIButton添加到Interface Builder對象庫?
- 2. 如何將控件添加到Interface Builder Gallery?
- 3. 如何使用Interface Builder將UIBarButtonItems添加到UIViewController.toolbarItems屬性?
- 4. 如何在Interface Builder中將約束添加到NSTextField的基線?
- 5. 如何將FontAwesome添加到Interface Builder的字體列表中?
- 6. 的UIScrollView變焦從Interface Builder的
- 7. 如何在Interface Builder中將自定義標籤添加到UITableViewCell的contentView中?
- 8. 通過Interface Builder在UITextView中添加'...'
- 9. 將UIButton添加到UIScrollView,然後將UIScrollView添加到UIView
- 10. 如何將UIScrollView添加到UIAlertView
- 11. 如何在Interface Builder中添加自定義對象?
- 12. 如何添加在Interface Builder對象原型細胞
- 13. 如何使用Interface Builder添加導航控制器?
- 14. UIView的子類。如何通過Interface Builder添加?
- 15. 如何使用Interface Builder在UIButton或UIBarButtonItem上添加BgImage?
- 16. 如何在Interface Builder中向NSMenu添加額外的項目?
- 17. 如何設置UIScrollView的子類,並在Interface Builder中將其連接起來
- 18. 加入TTImageView到使用Interface Builder
- 19. 將MKMapView拖放到Interface Builder中
- 20. 將UIRefreshControl添加到UIScrollView
- 21. 將UIImageView添加到UIScrollView
- 22. 將Stackview添加到UIScrollView
- 23. 將內容添加到UIScrollView
- 24. 將文本添加到UIScrollView
- 25. 將UIImageView添加到UIScrollView
- 26. 將UIImageView添加到UIScrollView
- 27. 將按鈕添加到UIScrollview
- 28. 將UIScrollView添加到CCSprite
- 29. 將UIScrollView添加到UIViewController
- 30. 將tapRecognizer添加到UIScrollView
馬克·w ^打我給它。 – mahboudz 2009-10-05 17:32:20
這不符合預期。現在一切都在UIScrollView下,但是當我加載應用程序時,沒有什麼可滾動的。爲什麼? – erotsppa 2009-10-06 02:33:01
在IB中,請確保滾動視圖足夠小,以便在應用運行時,視圖中可以看到整個視圖。換句話說,它的邊界/框架需要小於或等於它所在的視圖。 然後,在您的應用程序中,您需要使用所有按鈕,標籤等設置視圖的scrollview.contentSize =大小。這將比您爲滾動視圖設置的框架/邊界更大。 如果一切正常,那麼你應該可以在沒有其他工作的情況下進行滾動。 – mahboudz 2009-10-06 03:20:05