【问题标题】:Add gif animation under UITabBar item在UITabBar项下添加gif动画
【发布时间】:2016-12-28 05:17:22
【问题描述】:

我有一个UITabBarController,有 5 个标签。

我有一个GIF 文件,我想放在每个选项卡下。

我使用3rd party API (UIImage extension) called SwiftGif 来使用 gif,所以问题也可以这样问:

“我怎样才能将UIImage作为我UITabBar的背景”

但我想更具体地帮助您更好地理解。

【问题讨论】:

  • 当您说在选项卡下时,您的意思是在 UITabBarItems 下吗?例如标题“设置”下带有 gif 的“设置”选项卡按钮
  • @tech4242 不,我的意思是在 TabBar 中的 Tab 之间添加一个视图。明白了吗?
  • 老实说,我不确定。这必须更简单:您是否只是想将来自该 github 源的 UIImage gif 添加到您的 UIViewController 中,即您的标签页之一?因为当你说 under UITabBar 时,它有点意思是在栏本身之下.. 可能张贴截图/模型?
  • @tech4242 好吧,我的意思是在下面,而不是在下面。把它放在标签下面,在标签到栏之间
  • 你能给我们提供一个非常基本的模型吗?我有点迷茫,因为我认为当我们说 bar 和 tab 时我们的意思不同:)

标签: ios iphone swift cocoa-touch uitabbarcontroller


【解决方案1】:

试试这个来改变你的 tabBar 的背景self.tabBarController?.tabBar.backgroundImage = UIImageView(image: UIImage.gifWithName("yourGifName")) 请记住,这个语法来自 Swift 3 - 如果你使用的是 Swift 2,你可能需要稍微改变一下

【讨论】:

    【解决方案2】:

    斯威夫特 4: 你的标签栏的一个类,然后像这样设置图像:

    import UIKit
    import SwiftGifOrigin  ///to install that pod:  https://github.com/bahlo/SwiftGifCreate 
    
    class TabbarVC: UITabBarController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
    
            let myTabBarItem1 = (self.tabBar.items?[0])! as UITabBarItem
            myTabBarItem1.image = UIImage(named: "your unselected image")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
            myTabBarItem1.selectedImage = UIImage.gif(asset: "your gif")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
            myTabBarItem1.title = ""
            myTabBarItem1.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
    
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      这是我的解决方案,只需在 Tabbar 类中为所选图像设置 gif。

       import UIKit
      
      class TabbarVC: UITabBarController {
      
        override func viewDidLoad() {
          super.viewDidLoad()
      
          //Set Selected image for all items, I'm doing only for item 1
          let myTabBarItem1 = (self.tabBar.items?[0])! as UITabBarItem
          myTabBarItem1.selectedImage = UIImage.gifImageWithName("image name")
      
        }
      
      }
      

      这是从URL/Bundle/Name加载Gif的扩展。

      extension UIImage {
      
        public class func gifImageWithData(_ data: Data) -> UIImage? {
            guard let source = CGImageSourceCreateWithData(data as CFData, nil) else {
                print("image doesn't exist")
                return nil
            }
            return UIImage.animatedImageWithSource(source)
        }
      
        public class func gifImageWithURL(_ gifUrl:String) -> UIImage? {
            guard let bundleURL:URL = URL(string: gifUrl)
                else {
                    print("image named \"\(gifUrl)\" doesn't exist")
                    return nil
            }
            guard let imageData = try? Data(contentsOf: bundleURL) else {
                print("image named \"\(gifUrl)\" into NSData")
                return nil
            }
            return gifImageWithData(imageData)
        }
      
        public class func gifImageWithName(_ name: String) -> UIImage? {
            guard let bundleURL = Bundle.main
              .url(forResource: name, withExtension: "gif") else {
                    print("SwiftGif: This image named \"\(name)\" does not exist")
                    return nil
            }
            guard let imageData = try? Data(contentsOf: bundleURL) else {
                print("SwiftGif: Cannot turn image named \"\(name)\" into NSData")
                return nil
            }
      
            return gifImageWithData(imageData)
        }
      

      【讨论】:

        猜你喜欢
        • 2014-02-19
        • 2013-03-20
        • 2011-05-22
        • 2017-09-30
        • 1970-01-01
        • 2013-08-28
        • 2010-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多