xcode7 で designables error で困ったけど解決した件
xcode6.x系で @IBDesignable をつけて作成したclassをxibで使用していたところが、xcode7にアップデートした後に何らかのアクションを起こした後、designables error になっていた
たぶん該当のxibを開くとview updateが走るのでそれだと思う
開いただけで無駄にanimationsタグが増えてるのとかたぶんそれ
で、この件、ググると下記にたどり着き、
IBDesignable Errors · Günay Mert Karadoğan
Window > Projects > Delete Derive Data で delete しちゃいなよyou!ってことだったのでその通り削除した
その後、
linker command failed with exit code 1 file not found xcode
みたいなエラーがでる
かなしい
この辺みつかる
つまりこれ
Targets -> XxxTests の Host Application がグレーアウトしてたので指定してあげると直った
xcode7+elcapitanにしたらAlamofireSwiftyJSONが動かない件
勢いでxcode7にしたついでにelcapitanにもしたら案の定うまく動かなくてですね
下記の部分、
こうなんじゃね?的な話
responseJSON = JSON(data: object!) <|| Alamofireとかのverによっては変更しないでもうまく動くのかもしれない まあ自分でwrapしてあげるのが一番よく分かる
xcode7になってAlamofire-SwiftyJSONがエラーになる件
一旦、これに書き換えてみたメモ。
public func responseSwiftyJSON(queue: dispatch_queue_t? = nil, options: NSJSONReadingOptions = .AllowFragments, completionHandler: (NSURLRequest, NSHTTPURLResponse?, JSON, NSError?) -> Void) -> Self { return response(queue: queue) { (request, response, object, error) -> Void in dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { var responseJSON: JSON if error != nil || object == nil{ responseJSON = JSON.nullJSON } else { responseJSON = SwiftyJSON.JSON(object!) } dispatch_async(queue ?? dispatch_get_main_queue(), { completionHandler(request!, response, responseJSON, error) }) }) } } }
そもそも使わないという選択肢もありな気がしてきた今日このごろ。
iOSシミュレーターでネットワークをオフにしたい
Apple DeveloperならそれっぽいツールをDLできる
https://developer.apple.com/downloads/?q=Hardware%20IO%20Tools
なんか色々バージョンあって、僕はxcode6.4だったのですが、6.4用のがなかったので6.3のやつをDLしてみたところ、普通に使えました。
こうしてONにすると使える
Network Link Conditionerというらしい
名前を覚える自信がございません
UIImageViewにドロップシャドウをつけたときの角度
変更したかったのだけど、何いれればいいか謎だったけど参考になるサイトがあった。素敵。
imageView.layer.shadowOffset = CGSizeMake(w, h);
いうならばUIVIewか
AutolayoutしているUIVIewにグラデーションを指定する
はい。普通にぐぐると↑にたどり着くのですが、frameを使っているため普通に処理を書くとAutolayoutの制約の処理が終わっておらず、うまくグラデーションになりません。かなしい。
じゃあAutolayoutの制約の適用が完了した後にグラデーションの設定をすればいい、ってことで下記のようにしたら一応動きました。
override func drawRect(rect: CGRect) { super.drawRect(rect) let gradientLayer: CAGradientLayer = CAGradientLayer() gradientLayer.colors = [ UIColor.clearColor().CGColor, UIColor.blackColor().CGColor ] gradientLayer.locations = nil gradientLayer.frame = itemImageInnserShadow.bounds targetView.layer.insertSublayer(gradientLayer, atIndex: 0) }
drawRectの中だったらsuper.drawRect(rect)を呼び出す前でも後でも制約の適応は完了していたのでそこにグラデーションの設定のコードを記述しました。今回は親Viewの中にグラデーションで塗りつぶしたグラデviewをAutolayoutでサイズを指定して親view.addSubview(グラデview) をしたかった。
でもグラデーションにしたいUIViewのクラスを作ってそのdrawRect内に書くのがすっきり書けそう。その際は グラデview.contentMode = .Redraw しておくとよさそうなのでメモっておく。
gradientLayer.locationsに関しては Cocoaの日々: [iOS][Mac] Core Graphics - グラデーション が参考になった。