我想做的事情与MacOS
和iOS
设备上的电池徽章几乎完全相同。我尝试使用SFSymbols
,但它只支持%0
、%25
、%50
、%75
和%100
,但我想将电池徽章更新为当前电池电量。
我尝试在SFSymbols
中使用battery.0
图标,并将其与RoundedRectangle
重叠,如下所示:
struct BatteryView : View {
var body: some View {
ZStack {
Image(systemName: "battery.0")
RoundedRectangle(cornerRadius: 15)
.foregroundColor(.green)
}
}
}
但是当我试图放大或缩小它时,它的行为真的很奇怪,因为RoundedRectangle
。
提前感谢!
1条答案
按热度按时间dsekswqp1#
这是我想到的:
据我所知,
SFSymbols
中的battery
图标仅由3个元素组成:一个圆角矩形、一个位于电池顶部的半圆形以及另一个指示当前电池电量的圆角矩形。第一个圆角矩形(电池盒)
它看起来像这样(
frame
为180,60):我只是按照你的建议用了一个圆角矩形的电池盒。
半圆
我为此创建了一个名为
HalfCircleShape
的简单形状。在
GeometryReader
中,我给予了当前帧的1/7,因为它看起来很优雅。我把这些和
HStack
结合起来就像这样:
电池指示灯
我在
Color
中创建了一个扩展来选择当前电池电量的颜色我刚刚创建了另一个
RoundedRectangle
,并将两个RoundedRectangle
合并为一个ZStack
结果如下所示:第一次
最终代码:
此外,在
UIDevice
中,有一个名为batteryLevel
的属性,它可以提供当前电池电量,但在本例中,它只返回-1,请注意:as discussed here,这似乎是Swift中的一个错误。