ネットワークから画像を読み込むときとか、読み込み中は UIActivityIndicatorView
を出しておきたかったので作ってみました。
クラス名がいいものが思いつかなかったです ><
なんかキラキラした名前下さい!!
class LoadableImageView < UIImageView
attr_accessor :loading, :loading_view
def initWithFrame(rect)
super
@loading = false
@loading_view = UIActivityIndicatorView.alloc.initWithActivityIndicatorStyle(UIActivityIndicatorViewStyleWhite).tap do |lv|
lv.color = UIColor.blackColor
end
self
end
def loading=(loading)
if loading
self.image = nil
addSubview(@loading_view)
@loading_view.startAnimating
else
@loading_view.stopAnimating
end
end
def layoutSubviews
super
w = 30
h = 30
x = (self.frame.size.width/2.0 - w/2)
y = (self.frame.size.height/2.0 - h/2)
@loading_view.frame = [[x, y], [w, h]]
end
end
使い方
image_view = LoadableImageView.new
# ぐるぐる出す
image_view.loading = true
# ぐるぐるやめる
image_view.loading = false
ここまで書いて思ったのですが、image
プロパティが nil
のときに自動的にぐるぐるした方が使いやすいかもですね。