【Swift3.0】사이드 메뉴 돌아가기를 만들어 보았다
소개
왠지 사이드 메뉴가 나오는 앱이 멋지다고 생각했기 때문에 만들어 보았다.
잊으면 허무하기 때문에 비망록으로서 Qiita씨에게 남긴다.
개발 환경
구현 방법
이미지로서는, 스크린 내에 메인 화면을 표시하고, 왼쪽의 화면 밖에 사이드 메뉴를 추가한다.
앱 시작 직후에는 사이드 메뉴가 화면 밖에 있으므로 화면에 표시되지 않습니다.
버튼을 누르면 스크린 외부의 사이드 메뉴가 애니메이션으로 화면으로 이동합니다.
이런 식으로 사이드 메뉴를 구현해 보았다.
storyboard
ViewController.swift
ViewController.swiftimport UIKit
class ViewController: UIViewController {
// サイドメニューが表示中かの真偽
var isDisplayedSideMenu: Bool = false
// スクリーンサイズを格納するための変数
var screenWidth: CGFloat = 0
// storyboard上のサイドメニュー(UIViewController)を格納するためのもの
var sideMenuVC: UIViewController!
override func viewDidLoad() {
super.viewDidLoad()
// スクリーンの幅を取得して、変数に格納
screenWidth = getScreenSize().0
// メインビューにサイドメニューを追加
addSideMenu()
}
/*
* @IBAction
*/
// メイン画面のボタンと紐付ける
@IBAction func button(_ sender: Any) {
// サイドメニューが表示されていない時
if isDisplayedSideMenu == false {
// サイドメニューを出す
displaySideMenu()
}
// サイドメニューが表示されている時
else {
// サイドメニューを閉じる
closeSideMenu()
}
}
/*
* メソッド
*/
// スクリーンのサイズを取得するためのメソッド
func getScreenSize() -> (CGFloat, CGFloat) {
// スクリーンサイズを取得
let screenSize = UIScreen.main.bounds.size
// スクリーンの幅と高さを変数に格納
let width: CGFloat = screenSize.width
let height: CGFloat = screenSize.height
return (width, height)
}
// サイドメニューをメインビューに追加するためのメソッド
func addSideMenu() {
// サイドメニューをメインビューに追加
sideMenuVC = (storyboard?.instantiateViewController(withIdentifier: "sideMenu"))! as UIViewController
self.addChildViewController(sideMenuVC)
self.view.addSubview(sideMenuVC.view)
sideMenuVC.didMove(toParentViewController: self)
// 画面外に追加したサイドメニューを移動
sideMenuVC.view.transform = CGAffineTransform(translationX: (screenWidth * -1), y: 0)
}
// サイドメニューをメインビューに出すためのメソッド
func displaySideMenu() {
// サイドメニューをアニメーション付きで移動させる
UIView.animate(withDuration: 0.2, animations: { () -> Void in
self.sideMenuVC.view.transform = CGAffineTransform(translationX: (self.screenWidth * -1/2), y: 0)
})
// サイドメニューが表示されていることにする
isDisplayedSideMenu = true
}
// サイドメニューを格納するためのメソッド
func closeSideMenu() {
// サイドメニューをアニメーション付きで移動させる
UIView.animate(withDuration: 0.2, animations: { () -> Void in
self.sideMenuVC.view.transform = CGAffineTransform(translationX: (self.screenWidth * -1), y: 0)
})
// サイドメニューが表示されていることにする
isDisplayedSideMenu = false
}
}
부팅 후
버튼을 누르면 ...
Reference
이 문제에 관하여(【Swift3.0】사이드 메뉴 돌아가기를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/seaka829/items/5de3623a31e195c6eaab
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class ViewController: UIViewController {
// サイドメニューが表示中かの真偽
var isDisplayedSideMenu: Bool = false
// スクリーンサイズを格納するための変数
var screenWidth: CGFloat = 0
// storyboard上のサイドメニュー(UIViewController)を格納するためのもの
var sideMenuVC: UIViewController!
override func viewDidLoad() {
super.viewDidLoad()
// スクリーンの幅を取得して、変数に格納
screenWidth = getScreenSize().0
// メインビューにサイドメニューを追加
addSideMenu()
}
/*
* @IBAction
*/
// メイン画面のボタンと紐付ける
@IBAction func button(_ sender: Any) {
// サイドメニューが表示されていない時
if isDisplayedSideMenu == false {
// サイドメニューを出す
displaySideMenu()
}
// サイドメニューが表示されている時
else {
// サイドメニューを閉じる
closeSideMenu()
}
}
/*
* メソッド
*/
// スクリーンのサイズを取得するためのメソッド
func getScreenSize() -> (CGFloat, CGFloat) {
// スクリーンサイズを取得
let screenSize = UIScreen.main.bounds.size
// スクリーンの幅と高さを変数に格納
let width: CGFloat = screenSize.width
let height: CGFloat = screenSize.height
return (width, height)
}
// サイドメニューをメインビューに追加するためのメソッド
func addSideMenu() {
// サイドメニューをメインビューに追加
sideMenuVC = (storyboard?.instantiateViewController(withIdentifier: "sideMenu"))! as UIViewController
self.addChildViewController(sideMenuVC)
self.view.addSubview(sideMenuVC.view)
sideMenuVC.didMove(toParentViewController: self)
// 画面外に追加したサイドメニューを移動
sideMenuVC.view.transform = CGAffineTransform(translationX: (screenWidth * -1), y: 0)
}
// サイドメニューをメインビューに出すためのメソッド
func displaySideMenu() {
// サイドメニューをアニメーション付きで移動させる
UIView.animate(withDuration: 0.2, animations: { () -> Void in
self.sideMenuVC.view.transform = CGAffineTransform(translationX: (self.screenWidth * -1/2), y: 0)
})
// サイドメニューが表示されていることにする
isDisplayedSideMenu = true
}
// サイドメニューを格納するためのメソッド
func closeSideMenu() {
// サイドメニューをアニメーション付きで移動させる
UIView.animate(withDuration: 0.2, animations: { () -> Void in
self.sideMenuVC.view.transform = CGAffineTransform(translationX: (self.screenWidth * -1), y: 0)
})
// サイドメニューが表示されていることにする
isDisplayedSideMenu = false
}
}
Reference
이 문제에 관하여(【Swift3.0】사이드 메뉴 돌아가기를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/seaka829/items/5de3623a31e195c6eaab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)