簡體   English   中英

約束使兩個可變寬度視圖在superview的中心保持靠近

[英]Constraints to keep two variable-width views close together at the center of the superview

我在容器視圖中水平並排放置了兩個視圖。 它們相距8點,但寬度可變。 我想保持兩個視圖的中心等於容器視圖的中心,這樣無論容器的大小如何,兩個視圖一起位於屏幕的中心。

我想實現這一點的目的是創建兩個水平約束,一個從容器的左邊緣到第一個對象的左邊緣,第二個對象的右邊緣到容器的右邊緣。 然后我會使這兩個約束彼此相等,但隨容器的大小而變化。 不幸的是,我找不到辦法做到這一點。 我只能弄清楚如何使約束等於或大於/小於特定值。 有沒有辦法做到這一點?

即興思考,您是否嘗試將左視圖賦予其超級視圖的主要約束,為右視圖提供尾隨約束,然后給予兩個水平間距約束和相等寬度約束?

如果你想要這樣的東西:

[   <-  equal  -> <-  equal  ->   ]
[         [view1] [biggerview2]   ]-- resizable superview, fixed-width views

在視圖之間有8px,然后:

view1.trailing = superview.centerX - 4
biggerview2.leading = superview.centerX + 4

和其他明顯的限制,如:

view1.leading >= default
view1.width > 0

superview.trailing >= biggerview2.trailing + default
biggerview2.width > 0

...

你應該能夠在IB中做到這一點。

創建寬度為1的空視圖,並設置水平約束以將其放置在容器的中心。 這是一個占位符。

在相對於此中心占位符視圖的兩個視圖上設置約束:

左視圖應具有占位符前沿的尾隨約束。

右視圖應對占位符后端具有前導約束。

調整這兩個約束的常量,以獲得左視圖和右視圖之間所需的間距。

只需將兩個視圖嵌入到容器視圖中即可。 設置約束,以便容器緊密擁抱兩個視圖。 然后,將容器視圖置於其超視圖中心。

是的,有一種方法:你有超級視圖,其中有2個子視圖(你希望50:50到superview寬度):你需要從子視圖到superview的連接寬度約束(相等寬度),並改變這個約束的乘數從1到0.5(您也可以使用語法1:2(或3個子視圖的1:3))。 你也可以在那里設置常量值來設置填充:

這是一個例子:

子視圖與superview的比例寬度為2:1,填充為32為常量(每邊16個)

所以計算得像(對於iPhone 4S屏幕)(320寬度 - 32常數)/ 2 =子視圖寬度

在此輸入圖像描述

您還可以對3,4,5個子視圖執行相同操作,以創建更復雜的視圖。 這是與我的另一個例子的鏈接: https//dl.dropboxusercontent.com/u/48223929/AutolayoutExampleView.xib

暫無
暫無

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

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