ローカライゼーション
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」にチェックを入れる。
コードから設定する場合は、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)
}
}
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:)
メソッドが生成するタスクはキャンセルされなかった。