0

Создание приложения, содержащего flashCards. Они, безусловно, требуют возможности переворачивать карту. Для этого у меня есть UIViewController и, чтобы избежать отображения всего представления, я внедрил свой subView в контейнер.UIViewanimation trantitionfromView с использованием анимации UIViewflip

Я объявил два подзаголовка в контейнере с именем, frontView и backView. frontView получил красный фон и этикетку, говоря переднюю, а backView получил синий фон и этикетку, говорящую назад.

Я объявил переменную таким образом я могу проверить, какая сторона showened: var showingFront = true Получил действие UIButton который вызывает следующую FUNC:

if showingFront == true { 

     UIView.transitionFromView(forside, toView: bagside, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: nil) 

     showingFront = false 
    } else { 

     UIView.transitionFromView(bagside, toView: forside, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: nil) 

     showingFront = true 

    } 

Это переворачивает представление вперед и назад, но BackgroundColor исчезает с ярлыками и я могу видеть только перелив контейнера ?. Вся помощь ценится

ответ

2

попробовать этот способ: в раскадровке создать UIView (ширина = 90, высота = 132) и изменить его класс на "FlashCard"

также создайте кнопку, чтобы перевернуть флешку.

FlashCard:

import UIKit 

class ItemView: UIView { 

    var label:UILabel? 


    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(frame:CGRect){ 
     super.init(frame: frame) 
    } 

    convenience init(frame:CGRect, backgroundcolor:UIColor, labelText:String){ 
     self.init(frame: frame) 
     self.backgroundColor = backgroundcolor 
     self.contentMode = .ScaleAspectFit 

     label = UILabel(frame: CGRectMake(0,0,50,50)) 
     label!.textAlignment = NSTextAlignment.Center 
     label!.textColor = UIColor.whiteColor() 
     label?.center = self.center 
     label!.text = labelText 

     self.addSubview(label!) 

    } 

} 


class FlashCard: UIView { 

    var backView:ItemView? 
    var frontView:ItemView? 
    var isFrontView_CurrentlyVisable_onTheScreen = false 


    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     self.backgroundColor = UIColor.clearColor() 
     self.userInteractionEnabled=true 
     setupview() 


    } 

    override init(frame:CGRect){ 
     super.init(frame: frame) 
     self.backgroundColor = UIColor.clearColor() 
     self.userInteractionEnabled=true 
     setupview() 
    } 

    func setupview(){ 
    loadFront() 
    loadBack()  
    } 

    func loadFront(){ 

     if frontView == nil { 
      frontView = ItemView.init(frame: self.bounds, backgroundcolor: UIColor.redColor(), labelText: "Front") 
      self.addSubview(frontView!) 
      frontView?.hidden = true 
     } 
    } 

    func loadBack(){ 

     if backView == nil { 

      backView = ItemView.init(frame: self.bounds, backgroundcolor: UIColor.blueColor(), labelText: "Back") 
      self.addSubview(backView!) 
      backView?.hidden = false 
     } 


    } 

    func unloadBack(){ 
     backView?.removeFromSuperview() 
     backView=nil 
    } 


    func flip(){ 
     let ObjectToDisplay: ItemView 
     let currentlyVisableObjectOnScreen: ItemView 

     if isFrontView_CurrentlyVisable_onTheScreen{ 
      ObjectToDisplay = backView! 
      currentlyVisableObjectOnScreen = frontView! 
      isFrontView_CurrentlyVisable_onTheScreen = false 

     }else{ 
      ObjectToDisplay = frontView! 
      currentlyVisableObjectOnScreen = backView! 
      isFrontView_CurrentlyVisable_onTheScreen = true 
     } 

     if ObjectToDisplay.hidden{ 
      ObjectToDisplay.hidden = false 
     } 

     print("isFrontView_CurrentlyVisable_onTheScreen?: \(isFrontView_CurrentlyVisable_onTheScreen)") 

     UIView.transitionFromView(currentlyVisableObjectOnScreen, toView:ObjectToDisplay, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: {(done)->() in 
      if done{ 
       currentlyVisableObjectOnScreen.hidden = true 
      } 
     }) 
    } 


} 

в вашем ViewController:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var myButton: UIButton! 
    @IBOutlet weak var card: FlashCard! 


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


    @IBAction func buttonPressed(sender: AnyObject) { 
     card.flip() 
    } 



} 
+0

Просто Woow ... Он работает безупречно, невероятно такой умный, спасибо большое! : D –

+0

Добро пожаловать, я рад, что смогу помочь :-) – Dasem

Смежные вопросы