2016-02-25 68 views
2

我有一個帶圓角的UIView。獲取具有角的UIView中矩形的大小Radius

如何獲取內部矩形的大小?

+0

你的意思是,以取代函數中的第一行這樣一個內部的矩形拐角會觸及每個圓角的內部? –

+0

我的意思是我想知道如果我們刪除圓角部分會出現的矩形的大小。在我的每一面,只要我到達曲線,我想知道我在哪裏。 – Nico

回答

1

如果你想能夠得到像綠色矩形here。您可以使用此方法,在那裏你通過紅色矩形作爲參數:

func innerRectangle(view:UIView) -> CGRect { 
    let radius = view.layer.cornerRadius * (1 - M_SQRT1_2) 
    let origin = CGPoint(x: view.frame.origin.x + radius, y: view.frame.origin.y + radius) 
    let size = CGSize(width: view.frame.width-radius*2, height: view.frame.height-radius*2) 
    return CGRect(origin: origin, size: size) 
} 
+0

不幸的是,我不相信你的代碼會返回圖像中綠色矩形的區域。例如,如果'cornerRadius == 0.5f * view.frame.size.width',那麼你返回的'CGRect'的面積爲0,'origin.x == 0.5f * view.frame.size.width'和這些陳述都不是真的。我相信需要一些三角函數來準確地返回綠色矩形的CGRect。 – Fennelouski

+0

@Fennelouski感謝您將鏈接放在內聯。不過,我不相信你測試了你的代碼。這是不正確的。除了你的計算,減少寬度相同的值你增加了原點,已經沒有意義了。我會回到我的實施,它的工作原理和測試。請在Playground中嘗試一下 –

+0

我現在會這樣做,對於錯誤感到抱歉。 – Fennelouski

0

接受的答案是對的cornerRadius小的價值存在巨大的估計,但它的值增加外矩形的邊界明顯偏離。由於OP要求內RECT必須接觸外矩形,這將是更好地與

let radius = view.layer.cornerRadius * (1 - (1/pow(2, 0.5))) 

enter image description here

enter image description here

enter image description here