Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
314 kez görüntülendi
ios development kategorisinde tarafından
Merhabalar table view'ın scroll view indicator rengini değistirmek istiyorum. table view'ın tıklanabilir özelliklerininde default - black - white seçenekleri mevcut ancak custom bir renk için kod ile müdahale etmek gerekli ancak örnek bir kod maalesef bulamadım. Bilgisi olan arkadaşlar yardımcı olabilirse çok sevinirim.

1 cevap

0 oy
tarafından
tarafından seçilmiş
 
En İyi Cevap

aslında scrollView rengini default renkler olan siyah ve beyaz'dan başka bir renge set etmemek mümkün değil ama.
aşağıdaki örnekte olduğu gibi rengi değiştirebilirsiniz.
scrollView'in delegate metodlarında biri olan "scrollViewDidScroll" içerisinde scrollView içerisindeki subViewler olan indicatorları buluyoruz. Bu her scroll işlemi sırasında tekrarlanmalı. Bu nedenle "scrollViewDidScroll" delegate metodunu kullanıyoruz.

bulduğumuz indicator'ların rengini değiştirmek doğrudan mümkün değil.
bu nedenle içerisine o anki frame size derğerlerini alarak background renigini istediğimiz gibi belirlediğimiz boş bir UIView ekliyoruz.
Ama bu View'i eklemeden önce indicator içerisinde daha önceki scroll işleminden kalan eklediğimiz bir view'varsa for döngüsüyle bulup kaldırmalıyız. aksi takdirde her scroll işlemi sırasında defalarca yeni view'lari üstüste eklemiş oluruz.

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

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

        let myView:UIView = UIView(frame: CGRectMake(0.0, 0.0, self.view.frame.size.width * 2, self.view.frame.size.height * 2))
        myView.backgroundColor = UIColor.redColor()

        let scroll:UIScrollView = UIScrollView(frame: self.view.frame)
        scroll.delegate = self
        scroll.contentSize = CGSizeMake(myView.frame.size.width, myView.frame.size.height)
        scroll.addSubview(myView)
        self.view.addSubview(scroll)

    }

    func scrollViewDidScroll(scrollView: UIScrollView) {

        let verticalIndicator: UIImageView = (scrollView.subviews[(scrollView.subviews.count - 1)] as! UIImageView)
        if verticalIndicator.subviews.count > 0 {
            for subView in verticalIndicator.subviews as! [UIView] {
                subView.removeFromSuperview()
            }
        }
        let newVerticalIndicator:UIView = UIView()
        newVerticalIndicator.backgroundColor = UIColor.greenColor()
        newVerticalIndicator.frame = CGRectMake(0.0, 0.0, verticalIndicator.frame.size.width, verticalIndicator.frame.size.height)
        verticalIndicator.addSubview(newVerticalIndicator)


        let horizontalIndicator: UIImageView = (scrollView.subviews[(scrollView.subviews.count - 2)] as! UIImageView)
        if horizontalIndicator.subviews.count > 0 {
            for subView in horizontalIndicator.subviews as! [UIView] {
                subView.removeFromSuperview()
            }
        }
        let newHorizontalIndicator:UIView = UIView()
        newHorizontalIndicator.backgroundColor = UIColor.blueColor()
        newHorizontalIndicator.frame = CGRectMake(0.0, 0.0, horizontalIndicator.frame.size.width, horizontalIndicator.frame.size.height)
        horizontalIndicator.addSubview(newHorizontalIndicator)
    }

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


}
...