簡體   English   中英

在iOS 10下自動調整不起作用

[英]Autoresizing under iOS 10 doesn't work

我有一個沒有AutoLayout和Constraints的應用程序。 我只在尺寸檢查器中設置自動調整。 在iOS 9和更早版本下工作都很好。 在iOS 10下,自動調整功能不起作用,並將大小設置在屏幕之外。 請看下面的圖片:在模擬器中的iOS 10下

![1]

在iPhone 5和iPhone 6 Plus上也發生了同樣的情況。 我能做些什么,自動調整工作正常。

編輯1:另一種解決方法是將故事板設置為Xcode 7.x版本。 您可以在Interface Builder Document下的File Inspector中執行此操作。 設置選項打開Xcode 7.x值。 使用保存並關閉回答以下問題。 如果您現在在iPad或iPhone上運行該項目,則使用UIScrollView的所有視圖控制器都可以自動調整大小。

重要提示:此故障排除方法是在故事板中的每次更改后執行。

編輯2:我在蘋果開發者論壇上發了一篇帖子,請看這里: https//forums.developer.apple.com/message/182716#182716

這是Xcode 8中的一個錯誤,只需使用7.x版本來構建您的應用程序,然后它將正常顯示。

首先,進入有問題的故事板並找到有問題的滾動視圖,並在屬性中取消選中Autoresize Subviews。 這將阻止Xcode自動撤消我們即將做的所有事情。

其次,這是一個痛苦的部分,您需要在scrollview中修復視圖的寬度並將它們返回到正確的設置。 只需單擊視圖,找到右側控制旋鈕,然后將其拖回滾動視圖內。

為了使下一步更容易,所有子視圖應該位於滾動視圖中嵌套的單個內容視圖中。 (嵌套內容視圖也是在scrollview中使用自動調整大小自動布局的“最佳實踐”,因此請習慣它。)

請注意,如果您不首先取消選中Autoresize Subviews,那么Xcode將在您下次重新打開故事板時重新排列所有內容。

第三,您需要在您的代碼中為您的滾動視圖和內容視圖提供IBOutlets。

最后,將以下內容添加到ViewController中......

- (void)viewDidLayoutSubviews
{
    [self.scrollView setAutoresizesSubviews:YES];

    CGRect frame = self.contentView.frame;
    frame.size.width = self.view.frame.size.width - 20;
    self.contentView.frame = frame;

    [super viewDidLayoutSubviews];
}

基本上,我們重新啟用自動調整大小,然后將內容視圖的寬度設置為適當的寬度。 在這里,我希望我的內容視圖嵌套在具有10px邊距的滾動視圖中(因此為-20)。

需要對故事板中的每個違規滾動視圖進行上述操作。

有點參與,只是一個權宜之計,但比使用自動布局做全新布局更快。 我能夠在大約15分鍾內用大約十幾個場景和VC來修補故事板。 使用自動布局重建所有內容會花費很多很長時間。

請注意,這在最新的Xcode 8.1測試版中也沒有修復。 我很確定他們知道這個錯誤,但我也很確定這是Apple“鼓勵”他們的開發人員開始使用自動布局的方式。

兩種可能的方案,

  1. 修改圖像中顯示的autoresizingmask,它不是100%理想,因為沒有正確的填充,但它會工作。

在此輸入圖像描述

  1. 設置文本字段的框架,即CGRectMake(padding, y, self.view.frame.size.width-padding*2, height) ,這不是很好,因為你需要為每個文本字段執行此操作,但同樣會工作:p。

不幸的是,我不確定為什么文本字段的寬度達到1000+,當你設置它像iOS 10一樣,它可能與scrollview有關,我測試它沒有scrollview它按預期工作。

您可以從尺寸檢查器更改視圖控制器的模擬尺寸。 轉到尺寸檢查器並將模擬尺寸更改為自由形式 您可以根據需要設置視圖的寬度和高度。 要像在iOS 9中一樣查看屏幕,請將寬度和高度更改為600。

在此輸入圖像描述

根據我的測試,這個線程錯誤在Xcode 8.1 Beta 2中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM