ios14 SwiftUI widget 實(shí)現(xiàn)

IMG_5803.PNG.JPG

創(chuàng)建過程不在細(xì)說
1.widget 主要有三種風(fēng)格

.supportedFamilies([.systemMedium,.systemSmall,.systemLarge])

2.需要注意的點(diǎn)
systemSmall類型點(diǎn)擊事件,只能用

.widgetURL(URL(string: "www.baidu.com”))
//不能用下面這種方式
Link(destination: URL(string: "www.baidu.com")!)
{
}

3.點(diǎn)擊后接收點(diǎn)擊鏈接,
最新xcode創(chuàng)建的工程,可以在SceneDelegate.m文件。

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts;
{
    //遍歷urlcontenxts 取出url
    for (UIOpenURLContext *conten in URLContexts)
    {
        NSLog(@"%@",conten.URL.absoluteString);
    }
}
//老的工程在UWAppDelegate.m文件接收點(diǎn)擊結(jié)果
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

4.代碼實(shí)現(xiàn)(如果只需要一個(gè)widget,只需要設(shè)置好widget類型,然后編寫ui代碼即可,如果需要多個(gè)widget,需要?jiǎng)?chuàng)建一個(gè)widget入口)。詳細(xì)代碼見[demo]https://github.com/dust-zhang/swiftUI-widget.git

@main
struct Widgets: WidgetBundle
{
    @WidgetBundleBuilder
    var body: some Widget
    {
        FourToolWidgetWidget()
        SmallProductWidget()
        MediumProductWidget()
        
    }
}

然后創(chuàng)建不同的widget、widgetUI

struct SmallProductWidgetEntryView : View {
    //這里是Widget的類型判斷
    @Environment(\.widgetFamily) var family: WidgetFamily
    var entry: SmallProductWidgetProvider.Entry
    
    @ViewBuilder
    var body: some View
    {
        //加載四個(gè)快捷方式
        switch family
        {
            case .systemSmall:
                SmallProductView() //widget類型,只需要編寫需要的類型
            default:
                Text("")
        }
    }
}

5.創(chuàng)建UI
用慣了oc 或者swift布局的ui,對swiftui 會有點(diǎn)不適應(yīng)。
因?yàn)閟wiftui 是以中心點(diǎn)為坐標(biāo)點(diǎn),二oc、swift則是左上角(0,0)計(jì)算坐標(biāo)
swiftui 實(shí)現(xiàn)一個(gè)“hello word”

Text(“hello work”)

在窗口上默認(rèn)居中顯示,如果實(shí)現(xiàn)一個(gè)圖片,也是默認(rèn)居中顯示

Image("imagename”)

在swiftui布局中,最常用到
VStack和HStack兩個(gè)函數(shù)還有ZStack 具體布局樣式,寫兩行代碼試試便知,就不在贅述。

詳細(xì)代碼請下載demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容