【问题标题】:How do you add Facebook shimmering to images and UIViews?如何将 Facebook 闪烁添加到图像和 UIView 中?
【发布时间】:2016-10-04 22:59:06
【问题描述】:

我正在试用 Facebook 微光库,并且能够使用此代码将微光添加到文本标签。

    self.shimmeringView = FBShimmeringView(frame: CGRectMake(0, 0, 200, (self.navigationController?.navigationBar.bounds.height)!))
    self.shimmeringView.contentView = navLabel
    self.navigationItem.titleView = self.shimmeringView
    self.shimmeringView.shimmering = true

但是,我无法使图像或 UIImage 闪烁。这甚至可能吗?谢谢!

【问题讨论】:

  • 请添加您为闪烁 UIImageView 所做的代码。
  • 我尝试了类似的方法来闪烁 ImageView @IBOutlet var imageView: UIImageView! var shimmer:FBShimmeringView!覆盖 func viewDidLoad() { shimmer = FBShimmeringView(frame: self.imageView.frame) shimmer.shimmering = true }
  • @Shubhank 我已经添加了下面的代码。

标签: ios swift facebook ios-animations


【解决方案1】:

您也可以使用约束,而无需在每次视图布局子视图时都初始化微光视图:

let shimmer = FBShimmeringView(frame: .zero)
view.addSubview(shimmer)
shimmer.translatesAutoresizingMaskIntoConstraints = false
let leadingConstraint = NSLayoutConstraint(item: shimmer, attribute: .leading, relatedBy: .equal, toItem: navLabel, attribute: .leading, multiplier: 1, constant: 0)
let trailingConstraint = NSLayoutConstraint(item: shimmer, attribute: .trailing, relatedBy: .equal, toItem: navLabel, attribute: .trailing, multiplier: 1, constant: 0)
let topConstraint = NSLayoutConstraint(item: shimmer, attribute: .top, relatedBy: .equal, toItem: navLabel, attribute: .top, multiplier: 1, constant: 0)
let bottomConstraint = NSLayoutConstraint(item: shimmer, attribute: .bottom, relatedBy: .equal, toItem: navLabel, attribute: .bottom, multiplier: 1, constant: 0)
view.addConstraints([leadingConstraint, trailingConstraint, topConstraint, bottomConstraint])

【讨论】:

    【解决方案2】:

    您为使UIImageView 闪烁而做的事情是错误的。

    1. 您没有将微光作为子视图添加到视图中。
    2. 您没有将 UIImageView 设置为微光的 contentView。

    用类似的东西更新你的代码:

    @IBOutlet var imageView: UIImageView!
    
    var shimmer: FBShimmeringView!
    
    override func viewDidLoad() {
        shimmer = FBShimmeringView(frame: self.imageView.frame)
        shimmer.contentView = imageView
        self.view.addSubview(shimmer)
        shimmer.isShimmering = true
    }
    

    【讨论】:

      【解决方案3】:

      带有 Shimmer 的 Swift 3 (1.0.2):

      var imageView: UIImageView!
      
      var shimmer: FBShimmeringView!
      
      override func viewDidLayoutSubviews() {
          super.viewDidLayoutSubviews()
      
          shimmer = FBShimmeringView(frame: self.imageView.frame)
          shimmer.contentView = imageView
          self.view.addSubview(shimmer)
          shimmer.isShimmering = true
      }
      

      【讨论】:

        【解决方案4】:

        我对@Shubhank 的回答有疑问,尽管大部分回答都很好。

        使用 viewDidLoad 而不是 viewDidLayoutSubviews 的微光框架并没有给我想要的结果。

        所以我更新了代码,一切正常。

        @IBOutlet var imageView: UIImageView!
        
        var shimmer: FBShimmeringView!
        
        override func viewDidLayoutSubviews() {
                super.viewDidLayoutSubviews()
        
                shimmer = FBShimmeringView(frame: self.imageView.frame)
                shimmer.contentView = imageView
                self.view.addSubView(shimmer)
                shimmer.shimmering = true
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-21
          • 2012-08-20
          • 1970-01-01
          • 1970-01-01
          • 2012-10-30
          • 1970-01-01
          • 2015-03-24
          相关资源
          最近更新 更多