UIScrollView에 헤더 이미지를 판별하는 여러 이미지를 표시합니다.

15858 단어 SwiftiOS
이전에는 앱을 개발할 때 ScrollView에 붙은 여러 이미지 중 어떤 이미지가 클릭돼 처리되는지 판별하기가 까다로워 그 해결책을 썼다.
ScrolViewDelegate.swift
protocol ScrollViewDelegate{
    func modalChanged(TouchNumber: Int)
}
TouchScrollView.swift
import UIKit

class TouchScrollView: UIScrollView {

    var Delegate: ScrollViewDelegate!

    //タッチしたときの処理
    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        println("touchbegan")
        //どのタグのObjectがとれたか
        for touch: AnyObject in touches {
            var t: UITouch = touch as UITouch
            self.Delegate.modalChanged(Int(t.view.tag - 1))
        }
    }

    //タッチして動かしたときの処理
    override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
        println("touchmoved")
    }

    //タッチして離したときの処理
    override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
        println("touchended")

    }

}

헤더가 뽑혔을 때의 처리를 쓰기 위해, 헤더 사진이 저장된 배열 (UIImageView) 의 번호를 조사 사진의 라벨에modalChanged 방법의 매개 변수로 건네준다.
ViewController.swift
import UIKit


class ViewController: UIViewController,ScrollViewDelegate{

    private let ScrollView = TouchScrollView()

    private var ImageView: [UIImageView] = []

    private var image: [UIImage] = [
        UIImage(named: "sample.jpeg")!, UIImage(named: "sample.jpeg")!,
        UIImage(named: "sample.jpeg")!, UIImage(named: "sample.jpeg")!,
        UIImage(named: "sample.jpeg")!, UIImage(named: "sample.jpeg")!,
        UIImage(named: "sample.jpeg")!, UIImage(named: "sample.jpeg")!,
        UIImage(named: "sample.jpeg")!, UIImage(named: "sample.jpeg")!,
    ]

    override func viewDidLoad() {
        super.viewDidLoad()

        ScrollView.Delegate = self
        ScrollView.frame = CGRectMake(0,0,self.view.bounds.width,self.view.bounds.height)
        ScrollView.contentSize = CGSizeMake(self.view.bounds.width / 2, self.view.bounds.height + (CGFloat)(150 * 10))
        ScrollView.layer.position = CGPoint(x: self.view.bounds.width / 2,y: 300)
        ScrollView.pagingEnabled = false
        ScrollView.userInteractionEnabled = true
        self.view.addSubview(ScrollView)

        setImage()
    }
    func setImage(){


        for(var i = 0;i<10;i++){
            ImageView.insert(UIImageView(), atIndex: i)
            ImageView[i] = UIImageView(frame: CGRectMake(0,0,300,200))
            ImageView[i].image = image[i]
            ImageView[i].layer.position = CGPoint(x: self.view.bounds.width / 2,y: 200 + (CGFloat)(200 * i))
            ImageView[i].userInteractionEnabled = true
            ImageView[i].tag = i + 1

            ScrollView.addSubview(ImageView[i])

        }

    }
    func modalChanged(TouchNumber: Int) {
        println("\(TouchNumber)");
    }

}
사용한 그림의 이름은 Sample입니다.jpeg이니까 각자 좋아하는 그림으로 해보세요.
이후modalChanged 방법에서만 헤더의 그림에 따라 쓰기 처리를 합니다.
이번에는 print 출력에 헤더 사진의 배열 (UIImageView) 이 저장된 번호를 출력합니다.
다음과 같은 상황으로 나뉘어 헤더의 이미지를 판별하고 해당 이미지에 적합한 처리를 할 수 있다.
예를 들어 애니메이션의 이미지에서 화면은 애니메이션에 대한 상세한 정보가 있는 보기로 이동한다.
modalChanged
    func modalChanged(TouchNumber: Int) {

        switch TouchNumber{

        case 0:
            println("0");
        case 1:
            println("1");
        case 2:
            println("2");
        default:
            println("hoge");
        }
    }

좋은 웹페이지 즐겨찾기