2016-07-19 58 views
0

我有一些更多的對象,但猜測我基本上有兩個視圖和一個按鈕。其他人根本不影響這些物體。超視圖的大小無法更改而超級視圖正確更改

expandingView位於屏幕的上方,shinkingView位於屏幕的下方。它們相隔8個像素。

通過點擊按鈕,我想將展開式視圖的高度增加30,而另一個減少30,這樣我可以在一個有限的區域內獲得一個更大,另一個更小。我編碼如下:

expandingView.frame.size.height += 30 
shrinkingView.frame.size.height -= 30 

shrinkingView.frame.origin.y += 30 

是什麼導致問題是我無法在shrinkingView中更改子視圖。其中一個需要修復,所以沒關係,但另一個需要改變,因爲它的超級視圖改變了它的大小。

子視圖正確鏈接到UIButton變量。我以同樣的方式鍵入代碼,因爲我改變了superviews,但沒有改變,就好像我輸入的代碼不存在一樣。從字面上看,它們根本沒有效果。

即使使用相同的代碼方式,它們爲什麼無法更改?這是因爲它們處於不同的層次結構中?

回答

1
//takes in a view and for each subview (so every element inside if it is some kind of child of the view, it will be reduces. So all elements will be reduced. 
func reduceSubviews(view:UIView) { 
    for views in view.subviews { 
     views.frame.size.height -= 30 
     if(views.subviews.count > 0) { 
      reduceSubviews(views) 
     } 
    } 
} 
//apply to any view such as shrinkingView 
reduceSubviews(shrinkingView) 

嗯,說實話,這段代碼通過它的所有子視圖去縮小視圖,並且減少了它們的高度。或者它應該大聲笑

+1

也許你可以更多地解釋一下這段代碼對未來的悲傷會有什麼作用? –

+0

最底層的子視圖將包含UIScrollViews或UITableViews。我將不得不減少滾動視圖的大小以及 –

+0

那麼你可以做多個循環。當我到達電腦時,我會對此進行評論。或更新我的答案。 – impression7vx

相關問題