2014-01-10 25 views
0

我有一個'UIScrollView',應該顯示一個圖像列表的另一個。這是我使用添加的每個圖像的代碼:UINavigationViewController更改iOS7中的滾動視圖的行爲

#define SCROLL_PADDING 10 
#define SCROLL_DIMENSIONS 50 

view.frame = CGRectMake(xValue, SCROLL_PADDING, SCROLL_DIMENSIONS, SCROLL_DIMENSIONS); 
[scroller addSubview:view]; 

然而,如下面的圖像中,圖像被加載有垂直偏移。經過一番研究,我意識到這個偏移與導航欄高度相同。

With navigation controller

注1:默認情況下,圖像無法看到。我必須向上滾動才能看到它們。

注2:我應該無法滾動,因爲圖像應該放在滾動視圖中。

我決定以模態方式呈現視圖控制器,而不是將其推送到導航視圖控制器的層次結構,並且所有事情都按預期工作。

Without navigation controller

此問題只發生在iOS7。任何想法爲什麼?

回答

0

我碰到這個article,它清楚地解釋了狀態欄和導航欄上iOS7

正如你可以在上面這兩種圖像看到,滾動視圖的位置不發生改變的各種變化。在iOS6中,如果子視圖的框架沒有更改,則會將其向下移動以防止其位於導航欄下方。自iOS7以來,預計所有的子視圖不僅會導航欄,而且還會包含狀態欄,這會使SCREEN的左上角爲位置(0,0)。

由於某種原因,我還不明白(如果有人可以解釋,這將是很好的),只有滾動視圖的子視圖以與在iOS6中完成的相同方式移動。因此,使子視圖顯示在滾動視圖的邊界之外。

爲了防止子視圖從下疊導航欄,有必要在edgesForExtendedLayour視圖控制器的生命週期儘可能早地設置爲UIRectEdgeNone

viewController.edgesForExtendedLayout = UIRectEdgeNone; 
相關問題