2016-09-02 93 views
2

更新:iOS API - sizeThatFits:不起作用

對不起,我之前沒有足夠的描述和不正確的描述。

我不喜歡這樣的代碼:

UIView *view = [[UIView alloc] initWithFrame:someFrame]; 
CGSize size = [view sizeThatFits:CGSizeMake(100, 100)]; 

但是,當我看到size,就啥都沒:{0, 0}

我用錯了嗎?

即使我在初始框架中傳遞給我的視圖,大小仍然沒有返回。

我搜索了一些帖子,有人說UILabel也可能會受到影響。

+0

請檢查http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview。這是計算webview正確大小的最佳方式。 –

回答

3

您的視圖不包含任何內容,也沒有任何內置內容大小,因此它的大小爲零。

嘗試這些,你會看到,它的工作原理:

UILabel *label [UILabel new]; 
label.text = @"test test test test"; 
CGSize size = [label sizeThatFits:CGSizeMake(20, CGFLOAT_MAX)]; 
+0

@Boris你想要做什麼? – Prakash

+0

@ xxxy2j實際上我正在閱讀某人的源代碼並發現一些錯誤,當我調試它時,我發現他的代碼有一些異常,就像我在帖子中描述的那樣。 – Boris

1

作爲@Konstantin說:

您的看法簡化版,不含任何內容,並將其簡化版,有任何藝術性 內容大小

因此,嘗試使用此代碼

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
CGSize size = view.size; 
1

檢查的sizeThatFits的描述,它指出,

詢問視圖計算並傳回最適合 指定大小的尺寸。適合接收器子視圖的新尺寸。

因此,您的視圖應該有一些子視圖或內容,否則它會返回0,0