ios - 我想用滑动手势滑动图像以及我试图做但没有工作的页面控制
问题描述
var swipePosition = 0
var swipeGesture = UISwipeGestureRecognizer()
@IBOutlet weak var pageCtl: UIPageControl!
@IBOutlet weak var imageView: UIImageView!
// here is view did load
var swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(swiped))
swipeRight.direction = UISwipeGestureRecognizer.Direction.right
self.view.addGestureRecognizer(swipeRight)
var swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swiped))
swipeLeft.direction = UISwipeGestureRecognizer.Direction.left
self.view.addGestureRecognizer(swipeLeft)
// here imageNames is array of images
// swipePosition is Int
let imageNames = ["cauliflower", "grapres", "Image", "lily", "mango"]
1. @objc func swiped(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizer.Direction.left:
if swipePosition == imageNames.count - 1
{
pageCtl.currentPage = swipePosition + 1
swipePosition = 0
}else{
swipePosition += 1
}
imageView.image = UIImage(named: imageNames[swipePosition])
case UISwipeGestureRecognizer.Direction.right:
if swipePosition == 0 {
swipePosition = imageNames.count - 1
}else{
swipePosition -= 1
}
imageView.image = UIImage(named: imageNames[swipePosition])
default:
break
}
}
}
}
解决方案
try this
var arrImage = ["fruits1","fruits2","fruits3","fruits4","fruits5"]
var arrImageName = ["strawberry","apple","orange","pomegranate","mango"]
var position = Int ()
@IBOutlet weak var lblTitle: UILabel!
@IBOutlet weak var imageVw: UIImageView!
@IBOutlet weak var pageController: UIPageControl!
override func viewDidLoad() {
super.viewDidLoad()
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeLeft.direction = .left
self.view!.addGestureRecognizer(swipeLeft)
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
swipeRight.direction = .right
self.view!.addGestureRecognizer(swipeRight)
}
@objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
if gesture.direction == UISwipeGestureRecognizer.Direction.left {
if position < arrImage.count - 1{
position = position + 1
pageController.currentPage = position
imageVw.image = UIImage(named: arrImage[position])
lblTitle.text = arrImageName[position]
}
}
else if gesture.direction == UISwipeGestureRecognizer.Direction.right {
if position > 0 {
position = position - 1
pageController.currentPage = position
imageVw.image = UIImage(named: arrImage[position])
lblTitle.text = arrImageName[position]
}
}
推荐阅读
- android - 我正在使用 Visual Studio Code 开发 react-native。我有以下问题
- javascript - 控制数组中对象的位置
- javascript - 如何理解窗口对象上的事件监听器执行?
- jquery - 类型错误:t 未定义
- ruby-on-rails - 机械化访问链接并获取页面标题
- javascript - Vue JS:从不同组件访问数据
- matlab - 使用 MATLAB 查找大向量的交集
- ios - UIView 在显示键盘时出现,但在我开始输入时消失(swift)?
- amazon-web-services - aws cli s3 使用什么 TCP 端口号?
- python - 拟合 scipy.stats.erlang 分布时出错