Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

PullToRefresh animasyonu

0 oy
57 kez görüntülendi
6, Haziran, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
TableView'lerin güncellenebilir olduğu viewcontroller içerisinde pull to refresh ekledim. Sonra bu standart spinner animasyonu yerine aşağıdaki * bağlantıda yer alan animasyon dersinden faydalanıp kendime göre özelleştirdim.

Sadece scrollViewDidScroll içerisinde spinner ve compass grafikleri sağdan ve soldan getirilmesin de scale ile ortaya çıksın istedim. Yani kullanıcı tabloyu çekmeye başlamadan önce bu görsellerin scale'i 0 ve sonra  çektikçe de yavaş yavaş kendi  orijinal scale değerine dönsün. Ancak bunu çözemedim.

Yardımcı olabilirseniz çok sevinirim.

* http://www.jackrabbitmobile.com/design/ios-custom-pull-to-refresh-control/

1 cevap

+1 oy
9, Haziran, 2015 yasin tarafından cevaplandı
9, Haziran, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

scrollViewDidScroll delegate metodunu kullanarak basitçe şöyle birşey yapılabilir mesela;

class ViewController: UIViewController, UIScrollViewDelegate {


    var myScroll:UIScrollView! = nil
    var refreshIndıcatorHolder:UIView! = nil
    var refreshIndıcatorHolderHeight:CGFloat = 50
    var refreshIndicator:UIView! = nil


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        self.myScroll = UIScrollView(frame: self.view.frame)
        self.myScroll.delegate = self
        self.myScroll.backgroundColor = UIColor.grayColor()
        self.view.addSubview(self.myScroll)

        var scrollViewDummyContent:UIView = UIView(frame: CGRectMake(10.0, 10.0, self.view.frame.size.width - 20, self.view.frame.size.height * 2))
        scrollViewDummyContent.backgroundColor = UIColor.redColor()
        self.myScroll.addSubview(scrollViewDummyContent)
        self.myScroll.contentSize = CGSizeMake(scrollViewDummyContent.frame.size.width, scrollViewDummyContent.frame.size.height + 10)

        self.refreshIndıcatorHolder = UIView(frame: CGRectMake(0.0, -self.refreshIndıcatorHolderHeight, self.view.frame.size.width, self.refreshIndıcatorHolderHeight))
        self.refreshIndıcatorHolder.backgroundColor = UIColor.blueColor()
        self.view.addSubview(self.refreshIndıcatorHolder)

        self.refreshIndicator = UIView(frame: CGRectMake((self.refreshIndıcatorHolder.frame.size.width - (self.refreshIndıcatorHolder.frame.size.width * 0.6)) / 2, (self.refreshIndıcatorHolder.frame.size.height - (self.refreshIndıcatorHolder.frame.size.height * 0.8)) / 2, self.refreshIndıcatorHolder.frame.size.width * 0.6, self.refreshIndıcatorHolder.frame.size.height * 0.8))
        self.refreshIndicator.backgroundColor = UIColor.yellowColor()
        self.refreshIndıcatorHolder.addSubview(self.refreshIndicator)
        self.refreshIndicator.transform = CGAffineTransformMakeScale(0.0, 0.0)


    }

    func scrollViewDidScroll(scrollView: UIScrollView) {
        if self.myScroll.contentOffset.y < 0 {
            animateRefreshIndicatorWhilePullDown(self.myScroll.contentOffset.y)
        }
    }


    func animateRefreshIndicatorWhilePullDown(yScrollValue:CGFloat) {
        var absYScrollValue:CGFloat = fabs(yScrollValue)
        if absYScrollValue > 0 {
            var refreshIndıcatorHolderFrame:CGRect = self.refreshIndıcatorHolder.frame
            refreshIndıcatorHolderFrame.origin.y = absYScrollValue - self.refreshIndıcatorHolderHeight
            if refreshIndıcatorHolderFrame.origin.y < 0 {
                self.refreshIndıcatorHolder.frame = refreshIndıcatorHolderFrame
            } else {
                refreshIndıcatorHolderFrame.origin.y = 0
                self.refreshIndıcatorHolder.frame = refreshIndıcatorHolderFrame
            }
            var scaleRatio:CGFloat = (self.refreshIndıcatorHolderHeight + refreshIndıcatorHolderFrame.origin.y) / self.refreshIndıcatorHolderHeight
            self.refreshIndicator.transform = CGAffineTransformMakeScale(scaleRatio, scaleRatio)
        }
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
9, Haziran, 2015 burhanaksendir tarafından yorumlandı
10, Haziran, 2015 burhanaksendir tarafından düzenlendi
Teşekkür ederim yardımlarınız için.
...