Created
March 29, 2015 15:10
-
-
Save gawaooooo/4f08e5d29dc554e2f6f3 to your computer and use it in GitHub Desktop.
iOSで姓名診断アプリを作る swift版
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
@UIApplicationMain | |
class AppDelegate: UIResponder, UIApplicationDelegate { | |
var window: UIWindow? | |
var myNavigaionController: UINavigationController? | |
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { | |
// ViewControllerを生成 | |
let myFirstViewController: ViewController = ViewController() | |
// Navigation Controllerを生成 | |
myNavigaionController = UINavigationController(rootViewController: myFirstViewController) | |
self.window = UIWindow(frame: UIScreen.mainScreen().bounds) | |
self.window?.backgroundColor = UIColor.whiteColor() | |
// Navigation ControllerをrootViewControllerに設定 | |
self.window?.rootViewController = myNavigaionController | |
self.window?.makeKeyAndVisible() | |
return true | |
} | |
func applicationWillResignActive(application: UIApplication) { | |
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. | |
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. | |
} | |
func applicationDidEnterBackground(application: UIApplication) { | |
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. | |
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. | |
} | |
func applicationWillEnterForeground(application: UIApplication) { | |
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. | |
} | |
func applicationDidBecomeActive(application: UIApplication) { | |
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. | |
} | |
func applicationWillTerminate(application: UIApplication) { | |
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class ResultViewController: UIViewController { | |
// 入力された名前を入れる | |
var myName: String = "" | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
// Controllerのタイトルを設定 | |
self.title = "診断結果" | |
// Labelを作成 | |
let label: UILabel = UILabel(frame: CGRectMake(0, 0, 200, 40)) | |
// 背景色を付ける | |
label.backgroundColor = UIColor.lightGrayColor() | |
// 名前を代入 | |
label.text = "\(myName)の点数は…" | |
// テキストを中央寄せにする | |
label.textAlignment = NSTextAlignment.Center | |
// ラベルを配置する座標を設定する | |
label.layer.position = CGPoint(x: self.view.bounds.width / 2, y: 200) | |
// ViewにLabelを追加 | |
self.view.addSubview(label) | |
// 診断結果表示Labelを作成 | |
let resultLabel: UILabel = UILabel(frame: CGRectMake(0, 0, 200, 80)) | |
// 枠線を付ける | |
resultLabel.layer.borderColor = UIColor.redColor().CGColor | |
// 枠線の太さ | |
resultLabel.layer.borderWidth = 2.0 | |
// 点数を表示 | |
let score = arc4random_uniform(101) | |
resultLabel.text = "\(score)点" | |
// テキストを中央寄せ | |
resultLabel.textAlignment = NSTextAlignment.Center | |
// フォントサイズを大きくして太字に | |
resultLabel.font = UIFont.boldSystemFontOfSize(64) | |
// ラベルを配置する座標を設定する | |
resultLabel.layer.position = CGPoint(x: self.view.bounds.width / 2, y: 300) | |
// ViewにLabelを追加 | |
self.view.addSubview(resultLabel) | |
} | |
/* | |
Viewが表示される直前に行う処理 | |
*/ | |
override func viewWillAppear(animated: Bool) { | |
super.viewWillAppear(animated) | |
// TODO viewの背景色を設定 | |
// これで前の画面の残像(テキストフィールドとボタン)は消えたけど・・・?? | |
self.view.backgroundColor = UIColor.whiteColor() | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class ViewController: UIViewController, UITextFieldDelegate { | |
let sendButton: UIButton = UIButton() | |
var nameField: UITextField! | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
// Controllerのタイトルを設定する | |
self.title = "姓名診断" | |
// UITextFieldを作成する | |
nameField = UITextField(frame: CGRectMake(0, 0, 300, 30)) | |
// 最初に表示する文字を設定 | |
nameField.placeholder = "名前を入力" | |
// Delegateを設定する | |
nameField.delegate = self | |
// 枠を表示する | |
nameField.borderStyle = UITextBorderStyle.RoundedRect | |
// UITextFieldの表示する位置を設定 | |
nameField.layer.position = CGPoint(x: 160, y: 150) | |
// キーボードのReturnキーをSendに変える | |
nameField.returnKeyType = UIReturnKeyType.Send | |
// Viwに追加する | |
self.view.addSubview(nameField) | |
// 送信ボタンを設定する | |
sendButton.frame = CGRectMake(0, 0, 50, 40) | |
// 背景色を設定する | |
sendButton.backgroundColor = UIColor.lightGrayColor() | |
sendButton.showsTouchWhenHighlighted = true | |
// 枠を丸くする | |
sendButton.layer.masksToBounds = true | |
// タイトルを設定する | |
sendButton.setTitle("Send", forState: .Normal) | |
sendButton.setTitleColor(UIColor.blackColor(), forState: .Normal) | |
// コーナーの半径を設定する | |
sendButton.layer.cornerRadius = 10.0 | |
// ボタンの位置を指定する | |
sendButton.layer.position = CGPoint(x: 340, y: 150) | |
// タグを設定する | |
sendButton.tag = 1 | |
// イベントを追加する | |
sendButton.addTarget(self, action: "showResult:", forControlEvents: .TouchUpInside) | |
// ボタンをViewに追加する | |
self.view.addSubview(sendButton) | |
} | |
/* | |
Viewが表示される直前に行う処理 | |
*/ | |
override func viewWillAppear(animated: Bool) { | |
super.viewWillAppear(animated) | |
// 名前入力テキストフィールドを空にする | |
nameField.text = "" | |
// 名前入力テキストフィールドにフォーカスする | |
nameField.becomeFirstResponder() | |
} | |
/* | |
ボタンイベント | |
*/ | |
func showResult(sender: UIButton) { | |
// 空文字チェック | |
if nameField.text == "" { | |
showAlert() | |
} else { | |
// 移動先のViewを定義する | |
let resultViewController = ResultViewController() | |
// ResultViewに移動する | |
self.navigationController?.pushViewController(resultViewController, animated: true) | |
// self.navigationController?.pushViewController(resultViewController, animated: false) | |
// TODO これで渡せるな・・? | |
resultViewController.myName = nameField.text | |
} | |
} | |
/* | |
エラーアラートを表示 | |
*/ | |
func showAlert() { | |
// UIAlertControllerを作成する | |
let myAlert = UIAlertController(title: "エラー", message: "診断したい名前を入力してください", preferredStyle: .Alert) | |
// OKのアクションを作成する | |
let myOkAction = UIAlertAction(title: "OK", style: .Default, handler: nil) | |
// OKのアクションを追加する | |
myAlert.addAction(myOkAction) | |
// UIAlertを発動する | |
presentViewController(myAlert, animated: true, completion: nil) | |
} | |
/* | |
改行ボタンが押された際に呼ばれる | |
*/ | |
func textFieldShouldReturn(textField: UITextField) -> Bool { | |
// returnを押すとキーボードが隠れる(フォーカスをはずす) | |
textField.resignFirstResponder() | |
// sendButtonと同じ処理を | |
sendButton.sendActionsForControlEvents(.TouchUpInside) | |
return true | |
} | |
/* | |
UITextFieldが編集された直後に呼ばれる | |
*/ | |
func textFieldDidBeginEditing(textField: UITextField) { | |
println("textFieldDidBeginEditing: \(textField.text)") | |
} | |
/* | |
UITextFieldが編集終了する直前に呼ばれる | |
*/ | |
func textFieldShouldEndEditing(textField: UITextField) -> Bool { | |
println("textFieldShouldEndEditing: \(textField.text)") | |
return true | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
// Dispose of any resources that can be recreated. | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment