ブックマーク / blogios.stack3.net (9)

  • Swiftで構造体、クラスどちらにするかの基準 | Cyber Passion for iOS

    これはstruct(構造体)かclass(クラス)どちらで宣言すべきか。慣れないうちは悩むことがあると思います。どちらにするのが良いかを考える基準について説明したいと思います。 参考: The Swift Programming Language: Classes and Structures structとclassの違い まずはstructとclassの違いを理解しておきましょう。 structは値渡し、classは参照渡し structは継承できない、classは継承できる ただしstructもextensionでメソッド追加はできる structはselfのプロパティを変更するメソッドはmutatingキーワードが必要になる structの方が望ましいもの シンプルなデータ構造である プロパティも値渡しの型である、つまりstructである Int、Double、String、Dic

    Swiftで構造体、クラスどちらにするかの基準 | Cyber Passion for iOS
    yfnt
    yfnt 2015/07/30
    Swiftで構造体、クラスどちらにするかの基準 | Cyber Passion for iOS
  • viewDidUnloadがdeprecatedになった理由を考察 | Cyber Passion for iOS

    iOS 6でviewDidUnloadがdeprecatedになりました。もはやメモリ不足の状況になってもViewController#viewが自動的に解放されることはありません。 このドキュメントの「On iOS 6 and Later, a View Controller Unloads Its Own Views When Desired」の項目を参照。 ここに以下のように書かれています(超意訳)。 画面上に描画されているviewはメモリをたくさん消費する可能性がある。ただし、windowにアタッチされなくなったviewのリソース(viewそのものではなく、たぶんその描画に関するもの)を、システムは自動的に解放する。だからほとんどのviewのメモリ消費は十分小さく、システムが自動的にviewそのものを削除したり、再生成する価値はない。 おそらく現行のiPhoneが十分なメモリを搭載

    viewDidUnloadがdeprecatedになった理由を考察 | Cyber Passion for iOS
    yfnt
    yfnt 2014/01/29
  • iOS 7でのStatusBarの文字色、非表示 | Cyber Passion for iOS

    iOS 7でStatusBarの扱いも変わりました。デフォルトではアプリケーション単位ではなくViewController単位、つまり画面単位で扱うようになりました。これにより従来の方法だとStatusBarのスタイル(UIStatusBarStyle)が変わらなかったり、非表示にならない場合があります。 StatusBarの外観はViewController単位で行う iOS 7のデフォルトの挙動はこれです。この場合、UIApplication#setStatusBarStyle,setStatusBarHiddenを使っても、文字色は変更できず、非表示になりません。以下のようにStatusBarの外観を変更します。 StatusBarの文字色を白色にする デフォルトのStatusBarの文字色は黒ですが、Viewの背景色が黒などの場合、白にしたいはずです。その場合、ViewContro

    iOS 7でのStatusBarの文字色、非表示 | Cyber Passion for iOS
    yfnt
    yfnt 2014/01/26
  • Custom Viewをxibで作る方法を考察 | Cyber Passion for iOS

    Custom Viewをxibファイルで作りたい時があると思います。そして、それをオブジェクト化する方法はいくつかあります。 Custom Viewクラスの初期化処理で、xibのViewをオブジェクト化して、それをaddSubviewする 自分はこれが最適解かなと思っています。理由は、 storyboard、xibでも、そのCustom Viewを使えるようになること initWithFrameなどプログラムから生成したい場合も対応可能 になることです。 手短に手順を説明すると以下のようになります。 xibファイルを作る xib上のViewにSubviewを配置する Custom Viewとなるクラスを作る xibのFile’s OwnerのCustom ClassをCustom Viewのクラス名にする CustomViewのinitWithCoder、initWithFrameで、xi

    Custom Viewをxibで作る方法を考察 | Cyber Passion for iOS
    yfnt
    yfnt 2014/01/25
  • Auto LayoutでCustom Viewを作る その1 | Cyber Passion for iOS

    Auto LayoutでCustom Viewを作成し、それをViewController#viewに配置する方法について説明します。 サンプルコード: https://github.com/stack3/iOSAutoLayoutSamples サンプルコードのCustomViewを選択すると以下の画面が表示されます。 横画面にするとこうなります。 STCustomView.xib グレー背景の部分がCustomViewで、これはSTCustomView.xibでレイアウトされています。 構成は以下のとおり。 UIView – backgroundColorをgrayにしている UIImageView – アイコン表示 UILabel – 文字列表示 UIImageViewのConstraintは以下のようになっています。 要するに幅と高さは32pxでSuperviewとの間隔は8pxと

    Auto LayoutでCustom Viewを作る その1 | Cyber Passion for iOS
    yfnt
    yfnt 2014/01/25
  • UICollectionView その3 セクション | Cyber Passion for iOS

    前回の続き。今回はセクション分けしてセルを表示する方法です。 サンプル: https://github.com/stack3/UICollectionViewSample サンプルを起動して、Sectionを選択すると以下の画面が表示されます。 5つのセクションと1セクションごとに10項目表示されます。 STCustomCollectionSectionViewクラス セクションのViewはUICollectionReusableViewのSubclassとして作ります。 @interface STCustomCollectionSectionView : UICollectionReusableView @property (weak, nonatomic, readonly) IBOutlet UILabel *titleLabel; @end 今回はセクションタイトル表示用のtitl

    UICollectionView その3 セクション | Cyber Passion for iOS
    yfnt
    yfnt 2014/01/16
  • Auto LayoutでCustom TableViewCellを作る | Cyber Passion for iOS

    前回のつづき 今回はCustom TableViewCellをInterface Builder + Auto Layoutで作る方法です。またセルの高さが可変する場合も含めて説明します。 ※ セルの高さ計算は面倒なことだったと思うのですが、Auto Layoutのおかげでその苦しみから解放されると思います。 サンプルコード: https://github.com/stack3/iOSAutoLayoutSamples サンプルコードを起動しFlexible TableViewCellを選択すると以下の画面が表示されます。 Labelが3つ並んでいて、それぞれ同じ文字列が入っています。セルごとに文字列の長さは異なります。つまりセルの高さはそれぞれ異なります。 横画面もうまく表示されます。 STFlexibleTableViewCell.xib このファイルでセルのレイアウトをしています。

    Auto LayoutでCustom TableViewCellを作る | Cyber Passion for iOS
    yfnt
    yfnt 2013/12/31
  • UITableViewを行単位(セル)でスクロールさせる | Cyber Passion for iOS

    プログラムからUITableViewを行単位でスクロールさせたいときは、以下のようにします。 下へスクロールさせる NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:CGPointMake(0, _tableView.contentOffset.y + 1)]; if (indexPath) { indexPath = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section]; [_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; } 上へスクロールさせる NSIndexPat

    UITableViewを行単位(セル)でスクロールさせる | Cyber Passion for iOS
    yfnt
    yfnt 2013/11/27
  • Auto Layout(iOS 7対応) その1 | Cyber Passion for iOS

    iOS 7になってから、全画面表示が基になりました。またXcode 5になってから、Interface Builder(以下IB)のAuto Layout関連のUIもガラリと変わりました。 今回は数回にわたってiOS 7 + Xcode 5 + Auto Layoutについて、解説していきたいと思います。 ごめんなさい、UIRectEdgeNoneを使った方法を書いてましたが、1ViewController + 1Storyboardの組み合わせの方が良いと思いましたので、記事を訂正しました。 2013/11/3 またiOS 7でViewが全画面になったことに関する理解がまだの人は、こちらの記事から先に読んだほうがよいかもしれません。 iOS 7の全画面対応 上記の記事に書いたように、 全画面対応はStoryboard + Auto Layoutで行う 1画面は1ViewControll

    Auto Layout(iOS 7対応) その1 | Cyber Passion for iOS
    yfnt
    yfnt 2013/10/05
  • 1