[iOS]Autolayoutを使うとCGRectMakeでFrameを動かせなったりTransform関係が変ななる件

比率の異なる複数の画面対応にAutolayoutは便利ですが、表示要素を動かす時のトラブルの元になりがちですね。

CGRectMakeが効かない

StoryBoardに置いてある要素を、ソースコードから動的に追加すればOK!

Transform関係

いくつか解決法があるようです。

[Javascript][JQuery]ページの高さ

パララックスのページを作成していて、表示されていない部分も含めてページの高さを取得する方法を調べていた時の覚え書き。

様々な高さ

  • height

    var windowHeight = $(window).height();
    

    padding,border,marginを含まない、ブラウザで表示されている部分の高さ。

  • innerHeight

    var windowInnerHeight = $(window).innerHeight();
    

    paddingを含み、border,marginを含まない、ブラウザで表示されている部分の高さ。

  • outerHeight

    var windowOuterHeight = $(window).outerHeight();
    

    padding,borderを含み、marginを含まない、ブラウザで表示されている部分の高さ。

  • outerHeight(true)

    var windowHeight = $(window).outerHeight(true);
    

    padding,border,marginを含む、ブラウザで表示されている部分の高さ。

  • bodyのclientHeight

    var bodyHeight = document.body.clientHeight;
    

    body要素の高さ。つまりブラウザで表示されていない部分を含むページ全体の高さです。

参考:http://www.texelate.co.uk/blog/jquery-whats-the-difference-between-height-innerheight-and-outerheight/

[Javascript]ざっくりDOM操作

DOM操作

  • DOMとは

    HTMLのタグやその構造の事です。DOMを操作することでHTMLタグを、取得、生成、削除、改変、複製することができたりします。また、DOMを操作する文脈で、HTMLタグなんかのことをエレメントと呼ぶそうです。

  • エレメントの取得、検索

    1. document.getElementByID/document.getElementByClassName/document.getElementByTagNameを使って検索
    2. イベントハンドラ(マウスオーバーとか)の引数であるイベントオブジェクトのプロパティを使う。(event.target/event.currentTarget)
    3. childNodes/parentNodes/nextSibling/previousSiblingなどを使って構造から検索
  • エレメントの生成、削除、複製

    • 生成:document.createElement()メソッドを使う。からの、appendChild()メソッドで、生成したエレメントをDOMに追加する。
    • 削除:removeChild()メソッドを使う
    • 複製:cloneNode()メソッドを使う
  • エレメントの改変

    • クラスを追加

      クラス名がタグのclassパラメーターと連動しているので、ぶち込めばOK。

      dom.className = "className";

      既にそのタグがクラスを持っていて、別のクラスを追加したい場合はなんか強引な気がしますが以下の通り。

      dom.className = dom.className + " newClassName";
    • imgタグのソースパスを変更

      dom.src = "../images/hogehoge.png";
    • などなど、ようはタグのパラメーターにアクセスして値をぶち込めばOK。

[Mac]Xcodeのキャッシュその他を削除したら空き容量が約100GB増えた話

最近Macが重いなーと思い、システム情報からストレージを確認してみると、256GBあるSSDの空き容量が30GBくらいしか残っていませんでした。

主原因は膨れ上がっている「その他」と「バックアップ」の二つでして、「バックアップ」の方はどうやらタイムマシーンが貯めているスナップショットらしく、コチラで紹介されている方法を駆使して削除しました。

今度は「その他」の方に対策を打つべく、OmniDiskSweeperという、ファイルサイズを常時表示できるFinderのようなアプリを使って、重いディレクトリを片っ端から調べてみました。

すると、

Users/ユーザー名/Libarary/Developer/Xcode/DerivedData

と、

Users/ユーザー名/Libarary/Developer/Xcode/SnapShots

が数十GBまで膨れ上がっていたので、即刻削除しました。

これらのディレクトリはどうやらXcodeのバージョンを変えても引き継がれるようなので、同じMacでXcodeを長い間使い続けている方は特に注意した方が良いかもしれません。

その他に、iPhoneシミュレーターとローカルに保存されているフレームワークのリファレンスもまた数十GBあったので、古くて使わなそうなシミュレーターを消したり、昔のOSのリファレンスを消去したりもしました。(Dashでむやみにリファレンスをダウンロードするのも考えものですね。。。)

これらの作業でなんと合計約100GBの容量を確保できました!