所以我也跟着上創建與設備方向有關自定義視圖下面的教程:如何處理時,設備上的iOS旋轉換一個視圖
總結文章中,筆者能夠生成自定義在檢測到設備旋轉時,通過指向XIB文件中的新頂層視圖來查看橫向和縱向方向的視圖。
因此,我採用了複雜的視圖層次結構(許多按鈕,滑塊,視圖中的視圖),複製頂層的所有內容以創建橫向視圖。然後創建風景視圖的自定義安排。在我的代碼檢測到橫向方向的方法中,我的代碼在檢測縱向時指向橫向層次結構和縱向的頂部。
這是有效的,除了景觀層次中的所有IBOutlets(UIView,UIButton等)仍然在縱向視圖層次結構中引用它們的等效對象。我在運行時對這些UI元素做了大量特殊處理,所以我需要IBOutlets而不僅僅是IBActions。我發現我在橫向視圖中複製的UI元素可以指向相同的IBActions,但不能與縱向層次結構中的IBOutlet共享IBOutlet。
我是否必須複製所有對象並讓我的代碼管理所有內容(找出要使用的對象)?
確定我試了一下。所以我得到我需要做的是1.複製.xib文件(可以在Finder應用程序中執行)。 2.重新排列布局。 3.在適當的時候加載我的風景筆尖......是否有這個電話? 「 - (NSArray *)loadNibNamed:(NSString *)名稱所有者:(id)所有者選項:(NSDictionary *)選項」....那就是它? – Joe 2012-02-24 07:29:18
您可以使用該方法。如果你發現它太慢了,你應該看'UINib'。 – 2012-02-24 07:31:17
我試過這種方法,調用是:[[NSBundle mainBundle] loadNibNamed:@「MyLandscapeOrPortraitNib」owner:self options:nil]; 裏面 - (void)orientationChanged:(id)對象(取決於它是否檢測到風景/肖像)。然而,當新的筆尖被加載時,我只看到我的一些內容,並且我的應用程序很快就崩潰了(由於缺乏內容)。現在我注意到的是,如果我註釋掉筆尖加載線,那麼我的應用程序在肖像模式下運行100%。然後,當我添加筆尖時,我會在橫向和縱向上丟失內容。 – Joe 2012-02-24 21:26:28