Ios Swift 4:将任意数值转换为100%

Ios Swift 4:将任意数值转换为100%,ios,swift,geometry,Ios,Swift,Geometry,我正在编写一段代码,需要在ui视图上计算面积。我需要能够查看UI并确定可用于放置UI控件的空间量。因此,无论UIView的宽度是多少,可能是724pt,我需要将该值转换为100%。这里的诀窍是我检索UIView类型为Int的宽度的值。该值将代表正在计算的UIView相对于其superview占据的点数,但我被要求将其转换为CGFloat,该值表示UIView的superview在最右侧边界上剩余的负空间百分比,最左边的边界,或者两者都是superview。所以,如果我想把视图分成一半,我只需要取

我正在编写一段代码,需要在
ui视图上计算面积。我需要能够查看
UI
并确定可用于放置
UI
控件的空间量。因此,无论
UIView
的宽度是多少,可能是724pt,我需要将该值转换为100%。这里的诀窍是我检索
UIView
类型为
Int
的宽度的值。该值将代表正在计算的
UIView
相对于其superview占据的点数,但我被要求将其转换为
CGFloat
,该值表示
UIView
的superview在最右侧边界上剩余的负空间百分比,最左边的边界,或者两者都是superview。所以,如果我想把视图分成一半,我只需要取100%(724),然后说一半(362pt)的宽度返回50%。这需要从
Int
转换为
CGFloat


我要寻找的是如何在Swift 4中实现这一点的公式

你不需要把事情弄得这么复杂

如果您想要视图宽度的50%,只需执行以下操作:

let halfWidth = someView.frame.width * 0.5

用你需要的任何百分比替换0.5。

这不是快速,而是几何。对于视图的框架是二维的,它是宽度乘以高度(平方点?)。如果视图的宽度为724,则724为100%。将子视图的宽度相加,从724中减去它们的总宽度,剩下的是未使用的部分。因此,如果您的子视图总数为362,则使用了50%,剩下50%。我显然错过了什么。什么?@LeoDabus
midX
没有给出一半的宽度,它给出了帧中间的位置。对于x为100、宽度为300的帧,midX为250,而宽度*0.5显然为150。@LeoDabus这是一个特例。作为一个例子,这个问题似乎给出了50%。谢谢@rmaddy的回复。看起来很简单,但我相信你走的是对的。这可能是因为我的思想像椒盐卷饼一样被包裹着,现在在思考这个问题,我想不出解决办法。如果我对布局一个复杂的UI的要求不涉及在代码中完成所有工作,并且仍然处理方向的变化,那么我将使用自动布局并完成这项工作。但我从来都不擅长几何。很抱歉我的问题写得很快。它似乎并没有完全解释我这个有点复杂和难以描述的问题。我编辑了我的问题。很抱歉,您更新的问题没有原来的问题清楚,我的答案似乎仍然适用。那么我的答案不回答你更新的问题呢?本质上你的答案回答了我的问题。对于这个“所谓的”乘法,我需要做一些手工工作。我真的只是把事情弄得太复杂了。