UIscrollView&UIpageControlを使用してページをめくる最適な方法
2677 ワード
現在、多くの場合、Appは広告の起動や説明ページの更新などのニーズを実現しなければならない.この文章は簡単で迅速で、安価で美しい解決策を説明している.(iPhoneデスクトップページめくり効果と一致)
筆者はN種の
ここに記載されていて、必要な友达を助けたいと思っています.
以下は代理方法であり、小赤点の変化を実現する問題である.実際にiOSデスクトップのスライド効果はスライド停止時に変化する.次のようになります.
このDemoは私のGitHubに置いて、みんなもダウンロードして効果を見ることができます~
大成功!みんなの役に立つことを望みます~
筆者はN種の
UIScrollView
のdelegate方法を試みた後、効果はすべてよくないことを発見した.スライド速度(velocity
)がおかしいか、contentOffSet
の値が予想外であるかのいずれかである.人を狂わせるUIScrollView
にこのような属性があることを発見するまで:isPagingEnabled
.ハハ問題はすぐに解決して話をします~ここに記載されていて、必要な友达を助けたいと思っています.
くだらないことを言わないで、コードをつけなさい。
import UIKit
// global constants
let screenW = UIScreen.main.bounds.width
let screenH = UIScreen.main.bounds.height
let screenS = CGSize(width: screenW, height: screenH)
class AdvertisePageViewController: UIViewController, UIScrollViewDelegate {
var pageCtrl: UIPageControl!
override func viewDidLoad() {
super.viewDidLoad()
let scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: screenW, height: screenH))
scrollView.contentSize = CGSize(width: screenW * 3, height: screenH)
scrollView.bounces = false
scrollView.showsHorizontalScrollIndicator = false
scrollView.delegate = self
//The key move!
// . scrollView ,
// frame scrollView frame.
// true , UIKit .
scrollView.isPagingEnabled = true
self.view.addSubview(scrollView)
let image1 = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: screenS))
let image2 = UIImageView(frame: CGRect(origin: CGPoint(x: screenW, y: 0), size: screenS))
let image3 = UIImageView(frame: CGRect(origin: CGPoint(x: screenW * 2, y: 0), size: screenS))
image1.image = UIImage(named: "ad_01")
image2.image = UIImage(named: "ad_02")
image3.image = UIImage(named: "ad_03")
scrollView.addSubview(image1)
scrollView.addSubview(image2)
scrollView.addSubview(image3)
//
pageCtrl = UIPageControl(frame: CGRect(x: 0, y: screenH-30, width: screenW, height: 30))
pageCtrl.numberOfPages = 3
pageCtrl.currentPageIndicatorTintColor = UIColor.orange
pageCtrl.pageIndicatorTintColor = UIColor.lightGray
pageCtrl.currentPage = 0
self.view.addSubview(pageCtrl)
self.view.bringSubview(toFront: pageCtrl)
}
以下は代理方法であり、小赤点の変化を実現する問題である.実際にiOSデスクトップのスライド効果はスライド停止時に変化する.次のようになります.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let xOffset = scrollView.contentOffset.x
if xOffset < 0.5 * screenW {
pageCtrl.currentPage = 0
} else if xOffset > 0.5 * screenW && xOffset < 1.5 * screenW {
pageCtrl.currentPage = 1
} else {
pageCtrl.currentPage = 2
}
}
このDemoは私のGitHubに置いて、みんなもダウンロードして効果を見ることができます~
大成功!みんなの役に立つことを望みます~