2016-08-08 3 views
1

ich wie die „example.gif“ in der folgenden Bibliothek linkwie nur den Teil der UITableView verwischen gescrollt immer

ich diese gleiche Bibliothek bin nur mit einem Menü implementieren muß, um den Hintergrund zu verwischen. Ich habe contentInset verwendet, so dass die ersten drei Zeilen von unten angezeigt werden.

Jetzt ist mein Problem, wenn ich scrolle, ist der gesamte Bildschirm verschwommen, während ich den Teil des Bildschirms verwischen möchte, wo uitableviewcells scrollen werden. (Letztendlich wird der gesamte Bildschirm unscharf, sobald die erste Zelle die Spitze erreicht hat).

Wie kann ich dies erreichen. Wenn es eine Umgehung gibt, ohne die Bibliothek zu verwenden, ist es auch willkommen. Hier ist der Code -

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate{ 

    @IBOutlet weak var table: UITableView! 

    var blurView: DKLiveBlurView! 

    var unsortedCountryArray:[String] = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

//  Do any additional setup after loading the view, typically from a nib. 

     let topInset = self.view.frame.height - 120 

//  Array to display. 
     let countryArray = NSLocale.ISOCountryCodes() 

     for countryCode in countryArray { 
      let displayNameString = NSLocale.currentLocale().displayNameForKey(NSLocaleCountryCode, value: countryCode) 
      if displayNameString != nil { 
       unsortedCountryArray.append(displayNameString!) 
      } 
     } 

//  =============setting background============== 
//  self.bkgView = UIImageView(frame: self.view.bounds) 
//  self.bkgView.image = UIImage(named: "bg1") 
//  self.bkgView.contentMode = .ScaleAspectFill 
//  self.view.addSubview(self.bkgView) 

//  self.blurredBkgView = UIImageView(frame: self.view.bounds) 
//  self.blurredBkgView.image = UIImage(named: "bg1") 
//  self.blurredBkgView.contentMode = .ScaleAspectFill 
//  self.view.addSubview(blurredBkgView) 

//  self.blurredBkgView.alpha = 0.0 

// 
//  blurEffect = UIBlurEffect(style: .Light) 
//  visualEffectView = UIVisualEffectView(effect: blurEffect) 
//  visualEffectView.frame = self.blurredBkgView.bounds 
//  self.visualEffectView.alpha = 0.0 
//  self.view.addSubview(self.visualEffectView) 

     self.table.backgroundColor = UIColor.clearColor() 
     self.table.separatorColor = UIColor.clearColor() 
     self.table.contentInset = UIEdgeInsetsMake(topInset, 0, 0, 0) 
     self.table.rowHeight = 40 

     print("view bounds: \(self.view.bounds)\n and table bounds: \(self.table.bounds)") 
     self.blurView = DKLiveBlurView(frame: self.table.bounds) 
     self.blurView.originalImage = UIImage(named: "bg1") 
     self.blurView.scrollView = table 
     self.blurView.setBlurLevel(6.0) 
     self.blurView.isGlassEffectOn = true 
     self.table.backgroundView = self.blurView 


    } 

    func scrollViewDidScroll(scrollView: UIScrollView) { 
//  let height = CGFloat(scrollView.bounds.size.height) 
//  let position = max(scrollView.contentOffset.y, 0.0) 
//  let percent = min(position/height, 1.0) 
//  self.blurredBkgView.alpha = percent; 

//  print("scrollview bounds: \(scrollView.bounds)") 
    } 

    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
//  cell.backgroundView = self.blurView 

    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return unsortedCountryArray.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell")! 
     cell.textLabel?.text = unsortedCountryArray[indexPath.row] 
     cell.textLabel?.textColor = UIColor.blueColor() 
     cell.backgroundColor = UIColor.clearColor() 
     cell.selectionStyle = .None 
     return cell 
    } 



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


} 

So viel Code ist Unschärfe beim Scrollen.

Antwort

1

Um Ihre Inhalte Konto Inset Sie den Rahmen, den Sie Ihren blurView

Eg bieten ändern müssen

let contentInset = CGFloat(/*Your content inset*/) 
let blurFrame = CGRect(x: 0, y: contentInset, width: tableView.frame.width, height: tableView.frame.height - contentInset) 
self.blurView = DKLiveBlurView(frame: blurFrame) 

EDIT: Alte Antwort

Sie scheinen Grenzen eher als Rahmen zu verwenden für deine DKLiveBlurView. Dies bewirkt, dass Sie Ansicht verwischen von oben links auf dem Bildschirm (der Ursprung Ihrer Ansicht des Rahmens) starten

Versuchen:

self.blurView = DKLiveBlurView(frame: self.table.frame) 

Statt

self.blurView = DKLiveBlurView(frame: self.table.bounds) 
+0

nein, es verwischt die gesamte Hintergrund. –

+0

Oh ich sehe was du meinst! Du hast die Zellen nach unten verschoben und das ist der einzige Teil, den du unscharf machen willst. Ich werde meine Antwort jetzt ändern –

+0

Ich dachte, es würde jetzt funktionieren, aber immer noch dasselbe. :/ –

Verwandte Themen