Reputation: 439
I'm trying out Facebook shimmering library and I was able to add shimmering to text label using this code.
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
However, I am unable to make an image or an UIImage shimmer. Is this even possible? Thanks!
Upvotes: 1
Views: 5982
Reputation: 23
You can use constraints as well, without initializing the shimmer view every time when the view layouts the subviews:
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])
Upvotes: 1
Reputation: 21805
What you are doing for shimmering the UIImageView
is wrong.
UIImageView
as the contentView
for the shimmer.Update your code with something like that:
@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
}
Upvotes: 6
Reputation: 7152
Swift 3 with Shimmer (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
}
Upvotes: 1
Reputation: 278
I had a problem with @Shubhank answer, even though most of the answer is fine.
Using viewDidLoad instead of viewDidLayoutSubviews for shimmer frame didn't give me results that I wanted.
So I updated the code, and everything works fine.
@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
}
Upvotes: 0