最简单实现侧边栏的方法----UISplitViewController

Demo下载地址

1.创建一个新的工程,在storyboard里面删除已有的viewController,拖入一个UISplitviewControloler.



2.删除Navigation view,建立splitviewController 与 TableViewControl之间的联系,选择 master viewController,



3.将tableview的content修改成static,添加多个cell



4.添加多个UIViewController,并和cell建立关联。



5.实现UISplitViewController的子类,指定侧边栏的宽度,取消手势事件:

override func viewDidLoad() {

self.preferredPrimaryColumnWidthFraction =0.2

self.presentsWithGesture =false;

}


将storyboard中的splitViewController的关联类修改成实现的UISpliteViewController的子类



6.给添加的detail ViewController 添加实现类,

class ViewController: UIViewController {


overridefunc viewDidLoad() {

super.viewDidLoad()

//添加menu button

var btnShow = UIButton(frame: CGRectMake(10,20,100,30));

btnShow.setTitle("Menu",forState:UIControlState.normal);

btnShow.addTarget(self,action:"showMenu:",forControlEvents: UIControlEvents.TouchUpInside);

btnShow.backgroundColor = UIColor.grayColor();

self.view.addSubview(btnShow);

}

// button event

func showMenu(sender:UIButton){

//animation when change sideBar

UIView.animateWithDuration(0.5,animations: {() in

if self.splitViewController!.preferredDisplayMode == UISplitViewControllerdisplayMode.AllVisible{

//hide sideBar

self.splitViewController!.preferreddisplayMode = UISplitViewControllerdisplayMode.PrimaryHidden;

}else{

//show sideBar

self.splitViewController!.preferreddisplayMode = UISplitViewControllerdisplayMode.AllVisible;

}


})

}

overridefunc touchesEnded(touches:Set<NSObject>,withEvent event:UIEvent) {

//hide sideBar when tap detailViewController

UIView.animateWithDuration(0.5,animations: {() in

if self.splitViewController!.preferreddisplayMode == UISplitViewControllerdisplayMode.AllVisible{

self.splitViewController!.preferreddisplayMode = UISplitViewControllerdisplayMode.PrimaryHidden;

}

})

}

}





OK,简单的侧边栏实现了:







可以根据实际需要设置侧边来是ovelay 还是sidebyside:

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...