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

Swift'te Bounce Efektiyle PopUp Ekran açmak

0 oy
70 kez görüntülendi
26, Mayıs, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
iPhone uygulamamda, NavigationBar'da yer alan  bir butonum var. Bunun üzerine dokunulunca storyboard'ta hazırladığım font büyütme küçültme sembollleri ve sliderdan oluşan viewcontrollerim (320 x60) Popup olarak  bounce efektliyle açılsın istiyorum:

http://i.hizliresim.com/0qE61o.png

Bunu gerçekleştirmek için şu kodlardan yararlandım:
https://github.com/Christian1313/iOS_Swift_ColorPicker

Ancak popupun açılması küt diye oluyor. Bunun hiçbir şekilde bir bounce efekti ile çıkmasını ve kaybolmasını sağlayamadım.

1 cevap

+1 oy
26, Mayıs, 2015 yasin tarafından cevaplandı
27, Mayıs, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

fikir vermesi açısından.
UIView animation ve transform property'sini kullanılarak basitçe şöyle bir custom bouncing animasyonu yapılabilir.

@IBAction func buttonAaction(sender: AnyObject) {
var tempView:UIView = UIView(frame: CGRectMake(20, 20, 280, 100))
tempView.backgroundColor = UIColor.redColor()
tempView.alpha = 0
self.view.addSubview(tempView)
var starttingScaleTransform:CGAffineTransform = CGAffineTransformMakeScale(0.0, 0.0)
tempView.transform = starttingScaleTransform
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { () -> Void in
tempView.alpha = 1
var bouncingScaleUpTransform:CGAffineTransform = CGAffineTransformMakeScale(1.1, 1.1)
tempView.transform = bouncingScaleUpTransform
}) { (Bool) -> Void in
UIView.animateWithDuration(0.1, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { () -> Void in
tempView.alpha = 1
var bouncingScaleDownTransform:CGAffineTransform = CGAffineTransformMakeScale(1.0, 1.0)
tempView.transform = bouncingScaleDownTransform
}, completion: nil)
}
}

26, Mayıs, 2015 burhanaksendir tarafından yorumlandı
Teşekkür ederim. Normal kullanımda tam istediğim etki. Ancak şu  şekilde açılan bir ekran için uyarlayamıyorum:

@IBAction func showColorPickerProgrammatically(sender: UIButton)
    {
        let colorPickerVC = SwiftColorPickerViewController()
        colorPickerVC.delegate = self
        colorPickerVC.modalPresentationStyle = .Popover
        let popVC = colorPickerVC.popoverPresentationController!;
        popVC.sourceRect = sender.frame
        popVC.sourceView = self.view
        popVC.permittedArrowDirections = .Any;
        popVC.delegate = self;
        
 // Sizin örneğinizi burada present edilen controllere uyarlamak istiyorum.
        self.presentViewController(colorPickerVC, animated: true, completion: nil)
    }
26, Mayıs, 2015 yasin tarafından yorumlandı
hımm, sizin örnek popoverPresentationController'la yapılmış.
daha önce verdiğim örnek kafanızı karıştırmasın o zaman.
Çünkü ben bir UIView kullanılarak bu işin nasıl yapılabileceğine dair bir örnek vermiştim.

ayrıca kullandığınız örnek github projesini incelediğimde de colorpicker penceresi zaten bouncing efektiyle açılmıyor.
26, Mayıs, 2015 burhanaksendir tarafından yorumlandı
İşte ben de bu colorpicker penceresinin teknik olarak yaptığınız bir önceki örnekteki gibi bounce ile açılabilir mi onu öğrenmek istiyorum sizden. Teşekkür ederim.
26, Mayıs, 2015 yasin tarafından yorumlandı
hiç denemedim emin değilim ama muhtemelen yapılamıyordur.  
scale, translate, 3d veya 2d Rotation gibi custom transformation efektler kullanmak istiyorsanız, içeriğinizi bir UIView kullanarak görüntüleyin ve yukarıda verdiğim örnekte olduğu gibi animasyonlar yaratın.
böylece istediğiniz animasyonları yapmak için daha esnek bir yapı kurmuş olursunuz.
controller kullanmak oldukça kısıtlayıcı olabilir bu gibi durumlarda.
26, Mayıs, 2015 burhanaksendir tarafından yorumlandı
Teşekkür ederim Yasin bey yardımlarınız için.

Son olarak popover etkisini elde etmek için şu resimdeki gibi bir uiview oluşturabilir miyim sizce ?

http://i.hizliresim.com/ZD9m8G.jpg
27, Mayıs, 2015 yasin tarafından yorumlandı
tabiki oluşturabilirsin.
27, Mayıs, 2015 burhanaksendir tarafından yorumlandı
Teşekkür ederim.
...