2012-10-06 49 views
3

我目前使用iOS 6.0。如何使用storyboard設置UIView init的大小?

我有一個自定義UIView,需要有一定的大小。如果我以編程方式初始化視圖並添加它,那很好。但是,我找不到可以在故事板中設置視圖大小的地方。

在故事板中設置其大小不起作用,因爲故事板認爲它是空的並將其大小設置爲零。在viewDidLoadviewDidAppear中設置其大小不起作用,因爲後面的大小將被覆蓋_applyISEngineLayoutValue

回答

1

你可以在Interface Builder中做到這一點。打開,你有你的觀點的故事板,並打開實用程序菜單:

enter image description here

然後你可以選擇一個按鈕,看起來像一把尺子上的實用工具菜單的頂部:

enter image description here

在該菜單中,您可以設置視圖的大小以及如何擴展視圖。

此外,請務必在類檢查設置好的你的類觀點:

enter image description here

圖片令牌從this site

最後,確保你重寫initWithFrameinitWithCoder方法:

- (id)initWithFrame:(CGRect)frame { 
    return [super initWithFrame:frame]; 
} 

//Needs to be overrided when you set your size in interface builder 
- (id)initWithCoder:(NSCoder *)aDecoder { 
    return [self initWithFrame:[self frame]]; 
} 
+0

,不管我在檢查器設置的大小設置爲零。 – user1724886

+0

您是否像我在編輯中顯示的那樣將您的班級設置在檢查員中? –

+0

所以,我有一個MyView:UIView與drawRect方法,說畫一個圓圈。然後,我使用storyboard將UIView放在根視圖中,將類設置爲MyView,並將大小設置爲800 * 600。我期望的是屏幕上的一個圓,但沒有任何內容,因爲視圖的大小爲零。 – user1724886

1

我面臨同樣的問題,我想簡單的答案是:你可以不依賴於框架或邊界上使用故事板時的視圖init方法。

當您的視圖由segue初始化時,它將調用initWithCoder:方法而不是其他init方法,因爲它是從.xib文件反序列化視圖對象。在故事板之前,框架和邊界將在initWithCoder:被調用時設置,但似乎不再是故事板的情況 - iOS代碼稍後設置這些值。

我用一對夫婦的解決方法,根據不同的情況:

  1. 如果我知道這個觀點的提前大小(例如僅支持一個大小特產視圖),我有了自己initWithCoder:方法中的框架。

  2. 如果我不知道視圖的大小,我推遲了大小特定的東西的初始化,直到我的視圖的layoutSubviews方法被調用。

  3. 如果更方便,我有時只是在我的視圖的ViewController中明確地做特定尺寸的初始化。 (不漂亮,但有時候很快捷,我並不自豪。)

+0

我認爲你已經擊掌了腦袋,安德魯 - 它在故事板環境中「平淡無味」。蘋果似乎已經很晚了。 – Fattie

+1

啊!這是一個可行的技巧:http://stackoverflow.com/a/5837133/294884 – Fattie

0

我有同樣的問題,因爲你,當我選擇視圖並切換到屬性檢查器中,設置 「模擬度量標準」如下,我可以調整大小的尺寸檢查的觀點。

確保正如我說的大小設置爲「任意格式」或「無」

Simulated Metrics

相關問題