【초보자용】Swift3로 폭속 코딩 그 3(버튼 클릭과 이벤트)
6619 단어 iOSSwift3.0Xcode8Swiftplayground
첫 분은 아래를 참고하십시오.
제1회: 【초보자용】Swift3로 폭속 코딩 그 1(화면 작성과 Snippets의 사용법)
제2회: 【초보자용】Swift3로 폭속 코딩 그 2(UIView와 문자 표시)
버튼 클릭
조속하지만 모든 소스 코드입니다.
이벤트에 관해서는 움직여 보는 편이 빠르다고 생각하므로・・・
Test.playgroundimport UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Buttonを生成する
let button = UIButton()
button.frame = CGRect(x:0,y:0,width:200,height:40)
button.backgroundColor = UIColor.blue
button.layer.masksToBounds = true
// ボタンの状態
button.setTitle("ボタン", for: UIControlState.normal)
button.setTitleColor(UIColor.white, for: UIControlState.normal)
// 押された時
button.setTitle("押されました", for: UIControlState.highlighted)
button.setBackgroundImage(self.colorToImage(color: UIColor.orange), for: UIControlState.highlighted)
button.tag = 1 // ボタン識別用ID
button.layer.cornerRadius = 10.0
button.layer.position = CGPoint(x: button.bounds.width/2
, y:button.bounds.height/2)
button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
self.view.addSubview(button)
print(self.view.perform(Selector(("recursiveDescription"))))
}
func onClick(_ sender: AnyObject){
let button = sender as! UIButton
print("sender.tag:\(button.tag)")
// アラート表示
let alert: UIAlertController = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default) { action in
print("Action OK!!")
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
func colorToImage(color:UIColor)->UIImage{
let rect = CGRect(x:0, y:0, width:1.0,height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context:CGContext = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
let viewController = ViewController()
viewController.view.backgroundColor = UIColor.white
import PlaygroundSupport
PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true
미리보기
버튼을 클릭하면 다음과 같은 팝업(경고)이 표시됩니다.
이벤트 추가
클릭 이벤트를 추가하는 부분은 다음과 같습니다.
addTarget 메서드를 사용하여 이벤트를 호출합니다.
action 매개 변수는 호출할 메서드를 지정합니다.
이번에는 자체 제작 onClick 메서드를 만들고 호출합니다.
for 매개변수는 이벤트를 발생시키기 위한 조치의 유형을 지정합니다.
조건을 만족하는 타이밍에 메소드가 불려 갑니다.
이번에는 가장 많이 사용되는 타이밍
touchUpInside (버튼을 눌러 버튼 영역 내에서 버튼을 놓은 상태)로 지정합니다.
button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
이벤트의 종류에 대해서는 UIControlEvents 열거체로 정의되고 있습니다.
UIControl 클래스를 상속한 UIButton, UISlider, UISwitch, UITextField 등은 addTarget 메서드에 의한 이벤트 추가를 할 수 있습니다.
자주 사용하는 이벤트를 열어 둡니다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Buttonを生成する
let button = UIButton()
button.frame = CGRect(x:0,y:0,width:200,height:40)
button.backgroundColor = UIColor.blue
button.layer.masksToBounds = true
// ボタンの状態
button.setTitle("ボタン", for: UIControlState.normal)
button.setTitleColor(UIColor.white, for: UIControlState.normal)
// 押された時
button.setTitle("押されました", for: UIControlState.highlighted)
button.setBackgroundImage(self.colorToImage(color: UIColor.orange), for: UIControlState.highlighted)
button.tag = 1 // ボタン識別用ID
button.layer.cornerRadius = 10.0
button.layer.position = CGPoint(x: button.bounds.width/2
, y:button.bounds.height/2)
button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
self.view.addSubview(button)
print(self.view.perform(Selector(("recursiveDescription"))))
}
func onClick(_ sender: AnyObject){
let button = sender as! UIButton
print("sender.tag:\(button.tag)")
// アラート表示
let alert: UIAlertController = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default) { action in
print("Action OK!!")
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
func colorToImage(color:UIColor)->UIImage{
let rect = CGRect(x:0, y:0, width:1.0,height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context:CGContext = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
let viewController = ViewController()
viewController.view.backgroundColor = UIColor.white
import PlaygroundSupport
PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true
버튼을 클릭하면 다음과 같은 팝업(경고)이 표시됩니다.
이벤트 추가
클릭 이벤트를 추가하는 부분은 다음과 같습니다.
addTarget 메서드를 사용하여 이벤트를 호출합니다.
action 매개 변수는 호출할 메서드를 지정합니다.
이번에는 자체 제작 onClick 메서드를 만들고 호출합니다.
for 매개변수는 이벤트를 발생시키기 위한 조치의 유형을 지정합니다.
조건을 만족하는 타이밍에 메소드가 불려 갑니다.
이번에는 가장 많이 사용되는 타이밍
touchUpInside (버튼을 눌러 버튼 영역 내에서 버튼을 놓은 상태)로 지정합니다.
button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
이벤트의 종류에 대해서는 UIControlEvents 열거체로 정의되고 있습니다.
UIControl 클래스를 상속한 UIButton, UISlider, UISwitch, UITextField 등은 addTarget 메서드에 의한 이벤트 추가를 할 수 있습니다.
자주 사용하는 이벤트를 열어 둡니다.
button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
onClick 메소드는 다음과 같습니다.
UIAlertController는 팝업(경고)을 생성하기 위한 UI입니다.
UIViewConrtoller 클래스의 present 메소드에서 팝업을 호출합니다.
func onClick(_ sender: AnyObject){
let button = sender as! UIButton
print("sender.tag:\(button.tag)")
// アラート表示
let alert: UIAlertController = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default) { action in
print("Action OK!!")
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
button.tag는 UI를 식별하는 번호입니다.
동일한 메소드에 대해 여러 UI 구성 요소를 addTarget 할 수 있습니다.
그것을 구별하는 데 사용합니다.
예를 들어 두 개의 버튼이있는 경우 다음과 같이 두 버튼
누르거나 onClick 메소드 측에서 알 수 있습니다.
button1.tag=1
button2.tag=2
button1.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
button2.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
이벤트 삭제
이벤트를 삭제하려면 removeTarget 메서드를 사용합니다.
onClick 메소드의 끝에 다음과 같이 추가하십시오.
button.removeTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
두 번째 이후 onClick 메서드가 호출되지 않게 될 것입니다.
기타 보충(하이라이트)
setTitle 메소드나 setBackgroundImage 메소드에 대해서
for 파라미터로 하이라이트 상태(클릭 선택 상태)의 변화를 지정하고 있습니다.
button.setTitle("押されました", for: UIControlState.highlighted)
button.setBackgroundImage(self.colorToImage(color: UIColor.orange), for: UIControlState.highlighted)
setBackgroundImage에는 이미지(UIImage)를 지정해야 합니다만
이번은 자작의 colorToImage 메소드로
색 데이터(UIColor)로부터 단색의 화상 데이터(UIImage)를 작성하고 있습니다.
func colorToImage(color:UIColor)->UIImage{
let rect = CGRect(x:0, y:0, width:1.0,height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context:CGContext = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
Reference
이 문제에 관하여(【초보자용】Swift3로 폭속 코딩 그 3(버튼 클릭과 이벤트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teradonburi/items/381aabdf547977953d48
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
button.removeTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
setTitle 메소드나 setBackgroundImage 메소드에 대해서
for 파라미터로 하이라이트 상태(클릭 선택 상태)의 변화를 지정하고 있습니다.
button.setTitle("押されました", for: UIControlState.highlighted)
button.setBackgroundImage(self.colorToImage(color: UIColor.orange), for: UIControlState.highlighted)
setBackgroundImage에는 이미지(UIImage)를 지정해야 합니다만
이번은 자작의 colorToImage 메소드로
색 데이터(UIColor)로부터 단색의 화상 데이터(UIImage)를 작성하고 있습니다.
func colorToImage(color:UIColor)->UIImage{
let rect = CGRect(x:0, y:0, width:1.0,height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context:CGContext = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
Reference
이 문제에 관하여(【초보자용】Swift3로 폭속 코딩 그 3(버튼 클릭과 이벤트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teradonburi/items/381aabdf547977953d48텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)