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
让maximumHorizontalOffset:CGFloat = scrollView.contentSize.width-scrollView.frame.width
让currentHorizontalOffset: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 percentHorizontalOffset:CGFloat = currentHorizontalOffset / maximumHorizontalOffset
let percentVerticalOffset:CGFloat = currentVerticalOffset / maximumVerticalOffset
let percentOffset:CGPoint = CGPoint(x:percentHorizontalOffset,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上 发表 。