美文网首页
ios14 SwiftUI widget 实现

ios14 SwiftUI widget 实现

作者: jfzhang | 来源:发表于2020-11-24 12:10 被阅读0次
    IMG_5803.PNG.JPG

    创建过程不在细说
    1.widget 主要有三种风格

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

    2.需要注意的点
    systemSmall类型点击事件,只能用

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

    3.点击后接收点击链接,
    最新xcode创建的工程,可以在SceneDelegate.m文件。

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

    4.代码实现(如果只需要一个widget,只需要设置好widget类型,然后编写ui代码即可,如果需要多个widget,需要创建一个widget入口)。详细代码见[demo]https://github.com/dust-zhang/swiftUI-widget.git

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

    然后创建不同的widget、widgetUI

    struct SmallProductWidgetEntryView : View {
        //这里是Widget的类型判断
        @Environment(\.widgetFamily) var family: WidgetFamily
        var entry: SmallProductWidgetProvider.Entry
        
        @ViewBuilder
        var body: some View
        {
            //加载四个快捷方式
            switch family
            {
                case .systemSmall:
                    SmallProductView() //widget类型,只需要编写需要的类型
                default:
                    Text("")
            }
        }
    }
    

    5.创建UI
    用惯了oc 或者swift布局的ui,对swiftui 会有点不适应。
    因为swiftui 是以中心点为坐标点,二oc、swift则是左上角(0,0)计算坐标
    swiftui 实现一个“hello word”

    Text(“hello work”)
    

    在窗口上默认居中显示,如果实现一个图片,也是默认居中显示

    Image("imagename”)
    

    在swiftui布局中,最常用到
    VStack和HStack两个函数还有ZStack 具体布局样式,写两行代码试试便知,就不在赘述。

    详细代码请下载demo

    相关文章

      网友评论

          本文标题:ios14 SwiftUI widget 实现

          本文链接:https://www.haomeiwen.com/subject/rcsiiktx.html