2016-02-25 28 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