1

我正在尝试使用 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 微光。这甚至可能吗?谢谢!

4

4 回答 4

6

你为闪闪发光所做的事情UIImageView是错误的。

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

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

@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
}
于 2016-06-05T06:17:54.263 回答
1

带微光的 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
}
于 2018-03-05T20:43:28.613 回答
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])
于 2020-11-05T17:05:03.617 回答
0

我对@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
}
于 2018-02-09T13:12:01.803 回答