我是iOS开发的初学者。
我正在做一个像滑动图像的项目
1.搜索名为Swipe Gesture Recognizer的组件
2.抓住它并将其放在视图顶部(使用层次结构确保将其放在其上,如果将其放在另一个元素上,则此代码将无法工作)
3.在层次结构中选择一个“滑动手势识别器”,然后转到其属性页面。向左滑动更改
4.确保其他识别器的“滑动”属性为“右”
5.选择UIScrollView并取消选中启用滚动
6.将detectSwipe()连接到两个识别器。
上述步骤是我的任务,但我无法完成第6步
我认为IBAction没有得到认可。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
// initialize UIImageView empty array
var images = [UIImageView]()
let MAX_PAGE = 2
let MIN_PAGE = 0
var currentPage = 0
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
var contentWidth: CGFloat = 0.0
let scrollWidth = scrollView.frame.size.width
for x in 0...2{
let image = UIImage(named: "icon\(x).png")
let imageView = UIImageView(image: image)
images.append(imageView)
var newX: CGFloat = 0.0
newX = scrollWidth / 2 + scrollWidth * CGFloat(x)
contentWidth += newX
scrollView.addSubview(imageView)
imageView.frame = CGRect(x: newX - 75, y: (scrollView.frame.size.height / 2) - 75, width: 150, height: 150)
}
self.images[self.currentPage].transform = CGAffineTransform.init(scaleX: 1.4, y: 1.4)
scrollView.clipsToBounds = false
scrollView.contentSize = CGSize(width: contentWidth, height: view.frame.size.height)
}
@IBAction func detectSwipe(_ sender: UISwipeGestureRecognizer) {
if (currentPage < MAX_PAGE && sender.direction == UISwipeGestureRecognizerDirection.left) {
moveScrollView(direction: 1)
}
if (currentPage > MIN_PAGE && sender.direction == UISwipeGestureRecognizerDirection.right) {
moveScrollView(direction: -1)
}
}
func moveScrollView(direction: Int){
currentPage = currentPage + direction
let point: CGPoint = CGPoint(x: scrollView.frame.size.width * CGFloat(currentPage), y: 0.0)
scrollView.setContentOffset(point, animated: true)
// Create a animation to increase the actual icon on screen
UIView.animate(withDuration: 0.4){
self.images[self.currentPage].transform = CGAffineTransform.init(scaleX: 1.4, y: 1.4)
// Revert icon size of the non-active pages
for x in 0..<self.images.count {
if (x != self.currentPage) {
self.images[x].transform = CGAffineTransform.identity
}
}
}
}
}
答案 0 :(得分:0)
您的步骤6基本上确保在识别您的手势时调用哪个方法。 在你的情况下,你希望你的detectSwipe()方法被激发。
有很多方法可以实现这一点,最简单的方法是进入你的视图层次结构,控制+拖动你的&#34;滑动手势识别器&#34;到视图控制器。执行此操作后,您将看到一个列出许多选项的小窗口,其中一个选项通常是在Sent Actions下的detectSwipe。选择那个。
如果您担心无法识别IBAction,一种简单的验证方法是转到您定义方法的位置(在ViewController类中),您应该能够在方法名称的左侧看到一个小气泡(在我们通常放置断点的地方)。此泡泡确认此方法可用作任何UI操作的目标。
如果答案有助于解决您的问题,请将答案标记为正确,如果您有正确的解决方案,请立即投票,我是新来的:D