I am currently working on an app where you can swipe two halves of the phone screen separately with each half generating a random word when you swipe left.
I have created a list of words for the top half of the screen that randomly generate words. How would I apply this same method for the bottom half of the screen? I have got 2 images of the code that I currently have in view controller
import UIKit
class ViewController: UIViewController {
// put the labels and the buttons
@IBOutlet var InspirationalThought: UILabel!
@IBOutlet var Click: UIButton!
//what the label is going to show
var quotes = ["Geometrics", "Vectors", "Celebration", "Triangle", "Landscapes", "Seasons", "Snow", "Rain", "Sunrays", "Stencils", "Paint", "Graphics", "Graffiti", "Sports","Fashion","Ancient Greek", "Philosophers", "Fairy tales", "Fantasy", "Clouds", "Mystery", "Time Clocks", "Canvas", "Tie-dye", "Glitter", "Dessert", "Desert", "Energy", "Astrology", "Solar Systems", "Sea", "Beach", "Sphere", "Roots", "Lights", "Darks", "Fire", "Air", "Aperture", "Long exposure", "Portraits", "World", "Travel", "Architecture", "Freedom", "Old", "New", "Urban", "Lenses", "Fisheye", "Chords", "Music notes", "Spices", "Herbs", "Natural", "Marbles", "Wood", "Trees", "Forests", "Interior","Mammals", "Reptiles", "Ocean", "Birds", "Photography", "Exposure", "Opaque", "Translucent", "Freestyle", "Spots", "Stripes", "Zig Zag", "Spiral", "Glass", "Feathers", "Calm", "Bulb", "Heat", "Cold", "Stitches", "Views", "Birds", "Sunset", "Earth"]
var whichQuotestoChoose = 0
// what the button is going to show
var ButtonText = ["Inspiration", "Tell me more", "more inspirational"]
var whichButtonTexttoChoose = 0
@IBAction func ClickButtonClicked(sender: UIButton) {
chooseAQuote()
chooseTextonButton()
}
func chooseAQuote(){
showTheQuote()
whichQuotestoChoose = Int(arc4random_uniform (84))
}
func showTheQuote(){
InspirationalThought.text = "\(quotes[whichQuotestoChoose])"
}
func chooseTextonButton(){
Click.setTitle("\(ButtonText[whichButtonTexttoChoose])", forState:UIControlState.Normal)
}
}
This is how you can do it.
If your background remains the same, with top and bottom color always same with star then get it as a image.
Add a imageView and set the image as background image
Add 2 UIView's view1 and view2 as top and bottom view. Set there background color as clearColor and tag as 1 and 2 respectively
Add swipe gesture 2 both of them with same selector.
Add UILabel to each namely view label1 and label2.
Create a string to hold the text from quotes when swipped. Based on the tag of the view, set the label text accordingly.
Below is the sample implementation:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
var displayString: String?
var quotes = ["Geometrics", "Vectors", "Celebration", "Triangle", "Landscapes", "Seasons", "Snow", "Rain", "Sunrays", "Stencils", "Paint", "Graphics", "Graffiti", "Sports","Fashion","Ancient Greek", "Philosophers", "Fairy tales", "Fantasy", "Clouds", "Mystery", "Time Clocks", "Canvas", "Tie-dye", "Glitter", "Dessert", "Desert", "Energy", "Astrology", "Solar Systems", "Sea", "Beach", "Sphere", "Roots", "Lights", "Darks", "Fire", "Air", "Aperture", "Long exposure", "Portraits", "World", "Travel", "Architecture", "Freedom", "Old", "New", "Urban", "Lenses", "Fisheye", "Chords", "Music notes", "Spices", "Herbs", "Natural", "Marbles", "Wood", "Trees", "Forests", "Interior","Mammals", "Reptiles", "Ocean", "Birds", "Photography", "Exposure", "Opaque", "Translucent", "Freestyle", "Spots", "Stripes", "Zig Zag", "Spiral", "Glass", "Feathers", "Calm", "Bulb", "Heat", "Cold", "Stitches", "Views", "Birds", "Sunset", "Earth"]
var whichQuotestoChoose = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.viewSwipped(_:)))
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
view1.addGestureRecognizer(swipeLeft)
let swipeLeft1 = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.viewSwipped(_:)))
swipeLeft1.direction = UISwipeGestureRecognizerDirection.Left
view2.addGestureRecognizer(swipeLeft1)
}
func viewSwipped(gesture: UIGestureRecognizer) {
self.chooseAQuote()
if let swippedView = gesture.view {
if swippedView.tag == 1 {
label1.leftToRightAnimation()
label1.text = displayString
} else {
label2.leftToRightAnimation()
label2.text = displayString
}
}
}
func chooseAQuote() {
displayString = quotes[whichQuotestoChoose]
whichQuotestoChoose = Int(arc4random_uniform (84))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension UIView {
func leftToRightAnimation(duration: NSTimeInterval = 0.5, completionDelegate: AnyObject? = nil) {
// Create a CATransition object
let leftToRightTransition = CATransition()
// Set its callback delegate to the completionDelegate that was provided
if let delegate: AnyObject = completionDelegate {
leftToRightTransition.delegate = delegate
}
leftToRightTransition.type = kCATransitionPush
leftToRightTransition.subtype = kCATransitionFromRight
leftToRightTransition.duration = duration
leftToRightTransition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
leftToRightTransition.fillMode = kCAFillModeRemoved
// Add the animation to the View's layer
self.layer.addAnimation(leftToRightTransition, forKey: "leftToRightTransition")
}
}