[背景]
发现自带的,都不是我想要的。
连官网都是:
Start Developing iOS Apps (Swift): Build a Basic UI
基于界面工具的。
[解决过程]
1.搜:
swift programmatically create new project tab page
参考:
2.搜:
swift programmatically create Tabbar
最后暂时是:
AppDelegate.swift
相关代码:
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. //application.statusBarHidden = true; //init main view controller let mainViewVC = MainViewController() let navigation = UINavigationController(rootViewController:mainViewVC) navigation.view.layer.shadowOffset = CGSizeMake(0,0); navigation.view.layer.shadowOpacity = 0.5; navigation.view.layer.shadowRadius = 10.0; navigation.view.layer.shadowColor = UIColor.blackColor().CGColor self.window!.rootViewController = mainViewVC return true }
MainViewController.swift
// // MainViewController.swift // JianDao3 // // Created by licrifan on 15/10/24. // Copyright © 2015年 licrifan. All rights reserved. // import UIKit class MainViewController: UITabBarController { var titleLabel:UILabel! let mainTabs = ["消息", "通讯录", "文档", "个人中心"] override func viewDidLoad() { super.viewDidLoad() NSLog("MainViewController viewDidLoad()") self.view.backgroundColor = UIColor.whiteColor() let tabbgView = UIView() tabbgView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.bounds), 44) //tabbgView.backgroundColor = UIColor(hexString: "#ff3333", alpha: 0.85) tabbgView.backgroundColor = UIColor.blackColor() self.view.addSubview(tabbgView) let statusView = UIView() statusView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 20) //statusView.backgroundColor = UIColor(hexString: "#ff3333") statusView.backgroundColor = UIColor.lightGrayColor() self.view.addSubview(statusView) let addMenu = UIImage(named:"add_white_24x24.png"); let addButton = UIButton() addButton.frame = CGRectMake(self.view.bounds.width - 54, 0, 44.0, 44.0) addButton.addTarget(self, action:"showAddMenu:", forControlEvents:UIControlEvents.TouchUpInside) addButton.setImage(addMenu,forState:UIControlState.Normal) tabbgView.addSubview(addButton) let searchMenu = UIImage(named:"search_24x24.png"); let searchButton = UIButton() searchButton.frame = CGRectMake(addButton.frame.origin.x - 44, 0, 44.0, 44.0) searchButton.addTarget(self, action:"jumpToSearch:", forControlEvents:UIControlEvents.TouchUpInside) searchButton.setImage(searchMenu,forState:UIControlState.Normal) tabbgView.addSubview(searchButton) titleLabel = UILabel(frame: CGRectMake(20, 20, self.view.bounds.width - 108, 44.0)) titleLabel.textColor = UIColor.whiteColor() titleLabel.textAlignment = NSTextAlignment.Left titleLabel.font = UIFont.boldSystemFontOfSize(18) titleLabel.text = STR_APP_NAME self.view.addSubview(titleLabel) //create tabs let viewMessage = MessageViewController() let viewContact = ContactViewController() let viewFile = FileViewController() let viewPersonalCenter = PersonalCenterViewController() let nvcMessage = UINavigationController(rootViewController: viewMessage) nvcMessage.tabBarItem = UITabBarItem(title: mainTabs[0], image: UIImage(named:"message.png"), tag:0); let nvcContact = UINavigationController(rootViewController: viewContact) nvcContact.tabBarItem = UITabBarItem(title: mainTabs[1], image: UIImage(named:"contact.png"), tag:1); let nvcFile = UINavigationController(rootViewController: viewFile) nvcFile.tabBarItem = UITabBarItem(title: mainTabs[2], image: UIImage(named:"file.png"), tag:2); let nvcPersonalCenter = UINavigationController(rootViewController: viewPersonalCenter) nvcPersonalCenter.tabBarItem = UITabBarItem(title: mainTabs[3], image: UIImage(named:"peronal_center.png"), tag:3); self.viewControllers = [nvcMessage, nvcContact, nvcFile, nvcPersonalCenter] //default select message index 0 self.selectedIndex = 0 } //show add menu func showAddMenu(button : UIButton){ } //jump to search view func jumpToSearch(button : UIButton){ } }
其他的,比如:
MessageViewController.swift
都是空的:
import UIKit class MessageViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } }
效果是:
此处还是没有tab图片的。
需要去找一下。
经过一番折腾,代码如下:
AppDelegate.swift
相关代码:
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. //application.statusBarHidden = true; //init main view controller let mainViewVC = MainViewController() let navigation = UINavigationController(rootViewController:mainViewVC) navigation.view.layer.shadowOffset = CGSizeMake(0,0); navigation.view.layer.shadowOpacity = 0.5; navigation.view.layer.shadowRadius = 10.0; navigation.view.layer.shadowColor = UIColor.blackColor().CGColor self.window!.rootViewController = mainViewVC return true }
MainViewController.swift代码:
// // MainViewController.swift // JianDao3 // // Created by licrifan on 15/10/24. // Copyright © 2015年 licrifan. All rights reserved. // import UIKit class MainViewController: UITabBarController { var titleLabel:UILabel! let mainTabs = ["消息", "通讯录", "文档", "个人中心"] override func viewDidLoad() { super.viewDidLoad() NSLog("MainViewController viewDidLoad()") self.view.backgroundColor = UIColor.whiteColor() let statusView = UIView() statusView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), STATUS_BAR_HEIGHT) //statusView.backgroundColor = UIColor(hexString: "#ff3333") statusView.backgroundColor = UIColor.lightGrayColor() self.view.addSubview(statusView) let tabbgView = UIView() tabbgView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.bounds), NAVI_BAR_HEIGHT) //tabbgView.backgroundColor = UIColor(hexString: "#ff3333", alpha: 0.85) tabbgView.backgroundColor = UIColor.blackColor() self.view.addSubview(tabbgView) let addMenu = UIImage(named:"add_white_24x24.png") let addButton = UIButton() addButton.frame = CGRectMake(self.view.bounds.width - 54, 0, 44.0, NAVI_BAR_HEIGHT) addButton.addTarget(self, action:"showAddMenu:", forControlEvents:UIControlEvents.TouchUpInside) addButton.setImage(addMenu,forState:UIControlState.Normal) tabbgView.addSubview(addButton) let searchMenu = UIImage(named:"search_24x24.png") let searchButton = UIButton() searchButton.frame = CGRectMake(addButton.frame.origin.x - 44, 0, 44.0, NAVI_BAR_HEIGHT) searchButton.addTarget(self, action:"jumpToSearch:", forControlEvents:UIControlEvents.TouchUpInside) searchButton.setImage(searchMenu,forState:UIControlState.Normal) tabbgView.addSubview(searchButton) titleLabel = UILabel(frame: CGRectMake(20, 20, self.view.bounds.width - 108, NAVI_BAR_HEIGHT)) titleLabel.textColor = UIColor.whiteColor() titleLabel.textAlignment = NSTextAlignment.Left titleLabel.font = UIFont.boldSystemFontOfSize(20) titleLabel.text = STR_APP_NAME self.view.addSubview(titleLabel) //create tabs let viewMessage = MessageViewController() let viewContact = ContactViewController() let viewFile = FileViewController() let viewPersonalCenter = PersonalCenterViewController() let barItemFont = UIFont.systemFontOfSize(12) let nvcMessage = UINavigationController(rootViewController: viewMessage) nvcMessage.tabBarItem = UITabBarItem(title: mainTabs[0], image: UIImage(named:"message_unselected.png"), tag:0) //nvcMessage.tabBarItem.setTitleTextAttributes([NSFontAttributeName: barItemFont], forState: UIControlState.Normal) let nvcContact = UINavigationController(rootViewController: viewContact) nvcContact.tabBarItem = UITabBarItem(title: mainTabs[1], image: UIImage(named:"contact_unselected.png"), tag:1) //nvcContact.tabBarItem.setTitleTextAttributes([NSFontAttributeName: barItemFont], forState: UIControlState.Normal) let nvcFile = UINavigationController(rootViewController: viewFile) nvcFile.tabBarItem = UITabBarItem(title: mainTabs[2], image: UIImage(named:"file_unselected.png"), tag:2) //nvcFile.tabBarItem.setTitleTextAttributes([NSFontAttributeName: barItemFont], forState: UIControlState.Normal) let nvcPersonalCenter = UINavigationController(rootViewController: viewPersonalCenter) nvcPersonalCenter.tabBarItem = UITabBarItem(title: mainTabs[3], image: UIImage(named:"personal_center_unselected.png"), tag:3) //nvcPersonalCenter.tabBarItem.setTitleTextAttributes([NSFontAttributeName: barItemFont], forState: UIControlState.Normal) self.viewControllers = [nvcMessage, nvcContact, nvcFile, nvcPersonalCenter] //change bar item font to larger for nvcController in self.viewControllers!{ nvcController.tabBarItem.setTitleTextAttributes([NSFontAttributeName: barItemFont], forState: UIControlState.Normal) } //default select message index 0 self.selectedIndex = 0 } //show add menu func showAddMenu(button : UIButton){ } //jump to search view func jumpToSearch(button : UIButton){ } }
最后效果为:
转载请注明:在路上 » [已解决]Swift代码方式的去创建一个基于tab页面的app