나는이 ImageView
(A)의 내부를 ScrollView
. 사용자가 이미지의 한 지점을 클릭 할 때마다 핀이 설정되고 coordinates
인쇄됩니다.
그러나 coordinates
배열 내부에 여러 개를 저장하려고합니다 . 사용자가 이미지를 처음 3 번 클릭하면 내부에 저장할 좌표가 필요합니다 refs1
. 다음 14-20 번 내부 spots1
.
// MARK: - Outlets
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var sharkImage: UIImageView!
// MARK: - Properties
var refs1 :[Double] = []
var spots1 :[Double] = []
// MARK: - View Did Load
override func viewDidLoad() {
super.viewDidLoad()
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 6.0
scrollView.delegate = self
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))
self.sharkImage.isUserInteractionEnabled = true
self.sharkImage.addGestureRecognizer(tapGestureRecognizer)
}
// MARK: - Scroll View
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return sharkImage
}
// MARK: - Functions
func tapAction(sender: UITapGestureRecognizer) {
// Get points for the UIImageView
let touchPoint = sender.location(in: self.sharkImage)
print(touchPoint)
// Add pin to tap
let pin = UIImageView(frame: CGRect(x: touchPoint.x - 5, y: touchPoint.y - 5, width:10, height:10))
pin.image = UIImage(named: "photo-pin-red")
sharkImage.addSubview(pin)
}
우선 2D array
원하는 경우 좌표를 a에 저장할 수 있습니다 .
var refs1 :[[Double]] = []
var spots1 :[[Double]] = []
그런 다음 counter라는 전역 변수를 저장하여 클릭 수를 추적합니다.
var counter = 0
그런 다음 다음을 tapAction
수행하십시오 (설명은 주석 참조).
func tapAction(sender: UITapGestureRecognizer) {
// increase counter with +1 for each click
counter += 1
if counter <= 3 { // first 3
refs1.append([Double(touchPoint.x), Double(touchPoint.y)])
} else if counter <= 23 { // next 14 - 20 clicks
counter = 0 // reset counter to start over again
spots1.append([Double(touchPoint.x), Double(touchPoint.y)])
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다