LoginSignup
3
4

More than 5 years have passed since last update.

iOS開発メモ

Last updated at Posted at 2017-04-23

ローカライゼーション

Asset Catalog

コードで呼び出すときは、画像の名前ではなく、Asset Catalogに設定した名前を呼び出すことに注意。つまり使用前にAsset Catalogで名前を設定しておく必要がある。
http://www.sirochro.com/note/xcode-about-asset-catalog/

角丸

Aspect Fitについて

ランダムな値を生成する

int min = 1;
int max = 5;
int rNumber = arc4random_uniform(max + 1 - min) + min;
http://qiita.com/tomoyuki_okawa/items/5f0ce5146a07ab81da30

整数から文字列

int x = 100;
NSString *str = [NSString stringWithFormat:@"%d", x];
http://d.hatena.ne.jp/ugon105/20100905/1283708178

Alert Viewを呼ぶ

WKWebView

http://log.whitebook.info/swift/2014/11/swift-wkwebview-1.html
http://dev.classmethod.jp/references/ios8-webkit-wkwebview-1/

WebViewの左右をマージン無くする

WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避

WebViewでhttp通信を可能にする設定(ATS対応)

[iOS 8] WKWebView で Web ページのロード中にステータスバーにインジケーターを表示してみる 〜 Objective-C 編

WKWebViewのデリゲートメソッドについて

Xcodeの余計なログを表示しなくする方法

無線通信可能かどうか調べる(Reachability使用)

self.propertyと_propertyの違いと、使い分け方

入力フィールドのエリアが空の場合、エンターキーは非活性にする方法

storyboardから設定する場合は、「Auto-enable Return Key」にチェックを入れる。

スクリーンショット 2017-03-22 10.23.56.png

コードから設定する場合は、textfield.enablesReturnKeyAutomatically = YES;とする。

TextFieldでの文字の入力数の最大長を制限する

背景をタップすると、キーボードを非表示にする。

//ViewController.swift

    //TextFiledをstoryboardからつなげておく
    @IBOutlet weak var textField: UITextField!

    //MARK: キーボードが出ている状態で、キーボード以外をタップしたらキーボードを閉じる
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        //非表示にする。
        if(textField.isFirstResponder()){
            textField.resignFirstResponder()
        }

    }

(objc)現在時刻を取得する

日本語の曜日を取得する

「月」とか「火」とかの文字列が取得出来ます。
http://qiita.com/katsuhisaishii/items/5626fac9a2d5e6cb4792
その他時間を扱うトピックについては次が詳しい。
http://dev.classmethod.jp/smartphone/ios-nsdate/

Cocoapods導入

クラス名を文字列として取得する

例として、MyClass型のクラス名を取得する。

// MyClassクラスを定義
class MyClass {
}
let typeString = String(describing: MyClass.self)    //"MyClass"

Xib/NibファイルからUIパーツを初期化する

UITableViewCell

let nib = UINib(nibName: String(describing: MonthViewCell.self), bundle: nil)
guard let monthViewCell = nib.instantiate(withOwner: nil, options: nil).first as? MonthViewCell else {
  fatalError()
}

参考:http://himaratsu.hatenablog.com/entry/ios/customview

UIViewController

Xibファイルから初期化してNavigationControllerからプッシュして表示する

let areaVC = AreaVC.init(nibName: String(describing: AreaVC.self), bundle: nil)
areaVC.areaInfo = areaInfo
self.navigationController?.pushViewController(areaVC, animated: true)

navigation bar で戻ってきた時に、tableViewの選択を解除

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    if let indexPathForSelectedRow = prefTableView.indexPathForSelectedRow{
     prefTableView.deselectRow(at: indexPathForSelectedRow, animated: true)
    }
}

参考:UITableViewのUX改善(今すぐ出来る!)

URLSession使用時に通信をキャンセルしたい

URLSessionDataTask等Task単位でキャンセルしたい場合、task.cancel()でOK.

URLSessionごとキャンセルしたい場合、session.invalidateAndCancel()を呼ぶ。この時sessionインスタンスは無効化されるため、新しくインスタンスを生成する必要がある。
ただし、URLSession.sharedに対してinvalidateAndCancel()しても何も起こらない。

//タスクを生成して実行
let task = session.dataTask(with: urlRequest,
                                    completionHandler: {data,response,error in
     (中略)
 })

task.resume()

//セッションを無効化してタスクをキャンセル
session.invalidateAndCancel()
session = {
   let configuration = URLSessionConfiguration.default
   let session = URLSession(configuration: configuration)
   return session
  }()

URLSessionクラスには、reset(completionHandler:)なるメソッドもある。しかしこのメソッドではdataTask(with:completionHandler:)メソッドが生成するタスクはキャンセルされなかった。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4