Swift 4 ScrollView库兰尼米

Mobil uygulamalarda ensıkkullandığımızobjelerden biridekaydırılabilirkısımlardır。 Sayfakaydırma,照片,照片,照片,图片,照片,评论,评论,查看,查看Swift’te scrollViewnasılkullanılırgelinbakalım.。

Tasarımlabaşlayalım

İlkolarak 视图控制器 ScrollViewatalım 。 Sınırlarınıkullanmakistediğimizyeregörebelirleyelim。

的页面控制’de ekleyebilirsiniz。 Bu sayede hangi sayfadaolduğunuzukolaycaanlaşılabilir。

突出eklekısmından 视图 ekleyelim。 ArdındanYine eklekısmındanCoco Touch Class’tan View altsınıfınıekleyelim。

意见 ‘ımıza( Slide.xib )gidelim veistediğimiztasarımıyapalım。

Tasarımaşamasınıbitirdiğimizegörekodkısmınageçebiliriz。 您可以在Slide.xibdosyamızıSlide.swiftdosyamızabağlamamızgerekiyor中使用。

Objerlerimizi kodsatırlarımızabağlayalımbununiçinControl ile tutupsürüklememizyeterli。 Dilediğimizismi vererekbağlayalım。 我要在主控制器上播放故事板。在ViewController.Swift文件中添加内容。

ViewController’ımızayeni birsınıfekleyelim: UIScrollViewDelegate

请在viewDidLoad alt 滚动视图中添加一个ScrollView’lielmemiz gerekiyor。

  scrollview.delegate =自我 

Ardındansayfalarımızıtutacak bir dizioluşturalım。

  var幻灯片:[Slide] = [] 

Buişlemden颂歌bir fonksiyonyaratmamızgerekiyor。 Bu fonksiyonumuz bizim说falarımızıgireceğimizyer。

  func slides()-> [幻灯片] 
{

让slide1:Slide = Bundle.main.loadNibNamed(“ Slide”,所有者:self,选项:nil)? 滑动
slide1.imageView.image = UIImage(名称:“ yivli.JPG”)
slide1.titleLabel.text =“伊夫利·米纳雷”
slide1.descText.text =“安塔利亚(Antalya)Kalekapısısemtinde bulunan veçoksayıdaSelçukluyapıtındanoluşaneserlertopluluğudur。”

让slide2:Slide = Bundle.main.loadNibNamed(“ Slide”,所有者:self,选项:nil)? 滑动
slide2.imageView.image = UIImage(名称:“ kursunlu.JPG”)
slide2.titleLabel.text =“库尔松卢·埃拉莱斯西”
slide2.descText.text =“库尔松卢·埃拉莱斯西·塔比亚特·帕克·安塔利亚·安妮·阿克苏İlçesisınırlarıiçindeyer alandoğalgüzelliğiileziyaretçilerininkendine hayranbıraktıranbir yerdir

让slide3:Slide = Bundle.main.loadNibNamed(“ Slide”,所有者:self,选项:nil)? 滑动
slide3.imageView.image = UIImage(名称:“ duden.JPG”)
slide3.titleLabel.text =“DüdenŞelalesi”
slide3.descText.text =“安塔利亚的杜登·塞莱雷斯(Düdenşelâlesi),古吉尔勒·列宁迪尔(Güzelliklerindendir)。20米yüksekliktendökülür。AnakaynağıKırkgözmevkisidir”

让slide4:Slide = Bundle.main.loadNibNamed(“ Slide”,所有者:self,选项:nil)? 滑动
slide4.imageView.image = UIImage(名称:“ termessos.JPG”)
slide4.titleLabel.text =“ Termessos MilliParkı”
slide4.descText.text =“安塔利亚·科库特里(Antalya Korkuteli yolunun)12.公里。 ”

让slide5:Slide = Bundle.main.loadNibNamed(“ Slide”,所有者:self,选项:nil)? 滑动
slide5.imageView.image = UIImage(名称:“ perge.JPG”)
slide5.titleLabel.text =“ Perge Antik Kenti”
slide5.descText.text =“安塔利亚·塞希尔·梅尔克齐宁17公里。doğusundaki,阿克苏sınırlarıiçindeyer alan Perge Antik Kenti,sadecebölgenindeğil,tümAnadolu'nun endüzenliRomadönemikentledenden。

返回[slide1,slide2,slide3,slide4,slide5]
}

Bir sonraki fonksiyonumuz ise busayfalarımızıneklenmesinisağlayacak。

  // Scrollview bilgileri vekaydırılabbiliröğelerineklenmesi 
func setScrollView(slides:[Slide])
{
scrollView.frame = CGRect(x:0,y:0,宽度:view.frame.width,高度:view.frame.height)
scrollView.contentSize = CGSize(宽度:view.frame.width * CGFloat(slides.count),高度:view.frame.height)
scrollView.isPagingEnabled = true


对于我在0 .. <slides.count
{
slides [i] .frame = CGRect(x:view.frame.width * CGFloat(i),y:0,width:view.frame.width,height:view.frame.height)
scrollView.addSubview(slides [i])
}
}

她的图片过时了,而PageController的图片显示了动画。

  func scrollViewDidScroll(_ scrollView:UIScrollView) 
{
让pageIndex = round(scrollView.contentOffset.x / view.frame.width)
pageController.currentPage = Int(pageIndex)

// Dikey durum
让maximumHorizo​​ntalOffset:CGFloat = scrollView.contentSize.width-scrollView.frame.width
让currentHorizo​​ntalOffset:CGFloat = scrollView.contentOffset.x
// Yatay durum
让maximumVerticalOffset:CGFloat = scrollView.contentSize.height-scrollView.frame.height
让currentVerticalOffset:CGFloat = scrollView.contentOffset.y

// Yatay ve dikey olarakkaçıncıscrollView'deolduğumuzuanlamakiçinbulunan视图/最大视图
let percentHorizo​​ntalOffset:CGFloat = currentHorizo​​ntalOffset / maximumHorizo​​ntalOffset

let percentVerticalOffset:CGFloat = currentVerticalOffset / maximumVerticalOffset

let percentOffset:CGPoint = CGPoint(x:percentHorizo​​ntalOffset,y:percentVerticalOffset)

if(percentOffset.x> 0 && percentOffset.x <= 0.25){

slides [0] .imageView.transform = CGAffineTransform(scaleX:(0.25-percentOffset.x)/0.25,y:(0.25-percentOffset.x)/0.25)
slides [1] .imageView.transform = CGAffineTransform(scaleX:percentOffset.x / 0.25,y:percentOffset.x / 0.25)

} else if(percentOffset.x> 0.25 && percentOffset.x <= 0.50){
slides [1] .imageView.transform = CGAffineTransform(scaleX:(0.50-percentOffset.x)/0.25,y:(0.50-percentOffset.x)/0.25)
slides [2] .imageView.transform = CGAffineTransform(scaleX:percentOffset.x / 0.50,y:percentOffset.x / 0.50)

} else if(percentOffset.x> 0.50 && percentOffset.x <= 0.75){
slides [2] .imageView.transform = CGAffineTransform(scaleX:(0.75-percentOffset.x)/0.50,y:(0.75-percentOffset.x)/0.50)
slides [3] .imageView.transform = CGAffineTransform(scaleX:percentOffset.x / 0.75,y:percentOffset.x / 0.75)

}否则if(percentOffset.x> 0.75 && percentOffset.x <= 1){
slides [3] .imageView.transform = CGAffineTransform(scaleX:(1-percentOffset.x)/0.75,y:(1-percentOffset.x)/0.75)
slides [4] .imageView.transform = CGAffineTransform(scaleX:percentOffset.x / 1,y:percentOffset.x / 1)

}
}

Bu kodda Animasyoniçinkullandığımızkısımkafakarıştırabilir。 Özellikle,如果kısımları。 Buradayaptığımızilklem ilk olarak sayfaboyutlarınıbelirledik X ve Y olarakbunlarıbirbirinebölüpnerede hangi sayfadaolduğunuanlamasınısağladık。 Ardından5 sayfaiçin4kaydırmayaparak儿子sayfayaulaşabiliyoruzyani toplam sayfasayısınınbireksiğikadarkaydırmaişlemimizvar。 她的sayfaiçin0.25 pay olarak 1’ebölerekbuluyoruz。 Ardındanif kontrolleriyle hangi sayfadaolduğumuzuanlayıpon agöre摄影图片kaydırılırkenküçülmesinisağlıyoruz。 Kaydırdığımızınasılanlıyoruzdiye soracakolursanızkodumuzueklediğimizfonksiyonkaydırmaişlemisırasındaçalışıyor。

Tümbunlarıbitirdiğimizegöre儿子adımımızageçelim。 Burada ViewDidLoad替换为ıkıyondafonksiyonlarımızıçağıracağız。

 幻灯片= slides() 
setScrollView(slides:slides)

// Sayfabelirteçlerininbaşlangıçayarı
pageController.numberOfPages = slides.count
pageController.currentPage = 0
view.addSubview(pageController)

// Dikeykaydırmayıdevredışıbırakmakiçin
self.scrollView.contentSize.height = 1.0

Bukısımdayaptığımızişlemsayfalarımızıbelirleyip diziye atamakardındanbu diziyi scrollView’a kullanmakiçinhazırhale getirmek。 Sayfa belirteciniayarladıktansonra dikeykaydırmayıkapattıkbu projeiçindikeykaydırmakullanmayacağız。

Artıktümişlemlerimiztamamdır。 Projemiziçalıştırabiliriz。 Tek seferdeçalışmasıdileğiyle。 🤞

ProjenindosyasınaerişmekiçinGitHub


最初在 YusufÖZGÜL上 发表