簡體   English   中英

即使設置了原點和大小以使其分開,UIViews也會重疊

[英]UIViews overlap even when setting origin and size to keep them separate

我正在嘗試設計“漢堡菜單”,即導航角左上角的小按鈕,按下該按鈕將在左側顯示一個菜單,並在右側部分顯示原始視圖。

但是,在我的代碼中,我無法正確放置兩個視圖(漢堡菜單視圖和主視圖),並且它們重疊。 這是我在viewDidLoad()所做的事情。

CGRect frame = self.containerView.bounds;

int widthForHamburgerVC = 150;
CGRect hamburgerVCFrame = frame;
hamburgerVCFrame.size.width = widthForHamburgerVC;
hamburgerVCFrame.origin.x = 0;
self.hamburgerVC.view.frame = hamburgerVCFrame;
self.hamburgerVC.view.bounds = hamburgerVCFrame;

CGRect mainVCFrame = self.containerView.bounds;
mainVCFrame.origin.x = widthForHamburgerVC;
self.mainVC.view.frame = mainVCFrame;

[self.containerView addSubview:self.mainVC.view];
[self.containerView addSubview:self.hamburgerVC.view];

containerView是占用整個屏幕的視圖。 因此,從代碼開始,目的是使hamburgerVC視圖從x = 0開始並具有150個單位的寬度,而mainVC視圖從x = 150開始並具有通常的寬度。 不應有任何重疊,但看起來像這樣。

紅色是漢堡包視圖,並且遮擋了主視圖的一部分

紅色漢堡包視圖與主視圖重疊。 兩個視圖之間大約有50個單位的重疊,我無法解釋。 我試圖放置一個斷點並檢查兩個視圖的寬度和x坐標,結果與預期的一樣(漢堡視圖:x = 0,寬度=150。主視圖:x = 150,寬度= 320)。

有人看到設置這些視圖的代碼有任何問題嗎? 兩者都啟用了自動布局。

如果使用自動布局,則應避免指定框架。 您應該通過更改約束來調整視圖。 您可以在代碼中為約束創建出口,並指定更改,然后在約束已更新的視圖上調用layoutIfNeeded方法。

暫無
暫無

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

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