標籤:visible bounds turn ict plist 項目 dem make ati
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) // 依據String名字拿到控制器(添加項目名稱,命名空間,不能有數字和特殊符號) // 返回的是AnyClass? 需要as?強轉 // 控制器添加Type類型 let rootControl = NSClassFromString("SwiftyDemo.ViewController") as? UIViewController.Type let vc = rootControl?.init() window?.rootViewController = vc window?.makeKeyAndVisible() return true }
同時可以用info.plist擷取命名空間
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) // 依據String名字拿到控制器(添加項目名稱,命名空間,不能有數字和特殊符號) // 返回的是AnyClass? 需要as?強轉 // 控制器添加Type類型// let rootControl = NSClassFromString("SwiftyDemo.ViewController") as? UIViewController.Type // 擷取命名空間的值,可選 let str = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "" let con = NSClassFromString(str + "." + "ViewController") as? UIViewController.Type let vc = con?.init() window?.rootViewController = vc window?.makeKeyAndVisible() return true }
Swift反射機制實現 AppDelegate 字串擷取類並成為根控制器