Readmeテンプレート

R## 概要 歯車が回転したり、止まったすことで、タスクが進行中であることを示すクラス

継承元

UIView

実装手順

1.ストーリーボードから、UIButtonのアクションを2つとUIActivityIndicatorViewを追加
2.上記をViewControllerと紐付け
3.メソッド実装

主要プロパティ                                      

プロパティ名                                説明                                       サンプル            
hidesWhenStopped アニメーション中でない時に、indicatorを隠す       indicator.hidesWhenStopped = true |                           
isAnimating         アニメーション中か確認(Bool)                         indicator.isAnimating              
color                  indicatorに色をつける                             indicator.colar = UIColar.red      

主要メソッド

      メソッド                             説明                                     サンプル              
startAnimating()   アニメーションスタート                 indicator.startAnimating() |      
stopAnimating()   アニメーションストップ                 indicator.stopAnimating()  

フレームワーク

UIKit.framework

サポートOSバージョン

iOS2.0以上

開発環境

Category Version
Swift 3.02
XCode 8.2.1
iOS     10.0〜

参考

画像のキャッシュ(SDWebImage)

Apiで取得したurlを使って画像をキャッシュ→表示させる

①PodfileでSDWebImageをインストール ②#import <SDWebImage/UIImageView+WebCache.h> ③コーディング

1.


こんな感じにPodfileに書き込み
Pods for HotPepperApp
pod ‘AFNetworking’
pod ‘SDWebImage’


2.

#import <SDWebImage/UIImageView+WebCache.h></br>

3.

NSURL *url = [NSURL URLWithString:shop.logo];
        UIImage *placeholderImage = [UIImage imageNamed:@"noImage"];
                    [cell.logoImage sd_setImageWithURL:url
                   placeholderImage:placeholderImage];

.gitignoreの作り方

gitignoreファイルの作成

git管理下でプロジェクトを作成

atomなどのエディタで.gitignoreファイルを作成

以下をエディタに記載し、.gitディレクトリと同じ階層におく

*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcworkspace/contents.xcworkspacedata
*.swp
.DS_Store

###すでに開発を進めていて、後から追加する場合

上記の手順を踏んだ後ターミナルですでにコミットしてしまった不要なファイルを削除 

$ git rm --cached プロジェクト名.xcodeproj/project.xcworkspace/xcuserdata/ユーザー名.xcuserdatad/UserInterfaceState.xcuserstate

先ほど足した.gitignoreファイルをadd

$ git add .gitignore

忘れずにコミット

git commit -m "remove chache and add .gitignore"


以上

plistのパスの変更

plistを新しいディレクトリなどに移して、パスが変わってしまった時の対処法。
The file “Info.plist” couldn’t be opened because there is no such file.というエラーが出た時

f:id:ichi6161:20170420152726p:plain

target→Packagingの中にあるinfo.plist File項目のパスを変更しなければならない。

f:id:ichi6161:20170420152940p:plain

今回はplistをOthersディレクトリに入れて管理しているのでpassをCalendar/Others/Info.plistと変更したらOK

AutoLayout1

AutoLayoutのポイント

・Constraintsを設定する前に、だいたいの大きさや位置はpreviewで設定しておく。そうしないと、Constraints変になる

①全画面にimageViewを表示する

UIImageViewを選択した状態で、add new constraintsを選択する。

Marginを上下左右0に設定。Add 4 Constrainsを押すのを忘れずに。

f:id:ichi6161:20170418155810p:plain

黄色いボタンwarning button が出たら、previewとconstraintsがずれているという意味。
f:id:ichi6161:20170418155804p:plain

黄色い部分をクリック。Fix Missplacemantをクリックする
f:id:ichi6161:20170418155759p:plain


②ボタンやラベルを高さ50で3つ重ねる場合

それぞれのボタンで同じように設定すれば0K f:id:ichi6161:20170420004359p:plain


③ボタンの高さと幅を同じ割合で配置

f:id:ichi6161:20170420005259p:plain

Aspect Ratioにチェックを入れる

f:id:ichi6161:20170420005307p:plain

Multiplierの所でwidth:heightで設定できる

f:id:ichi6161:20170420005221p:plain


④中央に以下のように、画面中央に、画面幅の60%の幅で、ボタンを配置する

f:id:ichi6161:20170420010301p:plain

まずは中央に配置
f:id:ichi6161:20170420011034p:plain

buttonを押した状態で、controlを押しながら、viewと結びつけ、まずはEqual Widthsにチェック
f:id:ichi6161:20170420011137p:plain

Multiplierで0.6に設定
f:id:ichi6161:20170420011350p:plain

図だと一応Aspect Ratioも設定している

f:id:ichi6161:20170420011657p:plain


⑤複数のボタンを上から100ピクセルの位置に、同じ幅で3つ配置する。ボタンの高さは50ピクセル

f:id:ichi6161:20170420141341p:plain

まず基準となるbuttonのConstraintsを設定
f:id:ichi6161:20170420141359p:plain

2番目のbuttonの設定

f:id:ichi6161:20170420141441p:plain

最後のbuttonの設置
f:id:ichi6161:20170420141625p:plain

赤、緑、黄色の順でクリックし高さと幅を基準(黄色)に合わせる
f:id:ichi6161:20170420141724p:plain

最後に3つのbuttonの中心が基準と同じになるように設定
f:id:ichi6161:20170420141844p:plain

デバイスのディレクトリパスとNSFileManager

データをどのディレクトリに入れるかを整理する。

・cachesディレクト

このディレクトリ下のデータは、アプリがアクティブの時でも削除される可能性がある

・tmpディレクト

このディレクトリ下のデータは、 アプリがアクティブの時は保持され続ける

・Documentsディレクト

このディレクトリ下のデータは、アプリがアンインストールされない限り保持され続ける

参考 [http://qiita.com/zck/items/9d087d498ce711b22c04:title]

tmpディレクトリまでのパス

NSString *tmpDirPath = NSTemporaryDirectory();

cachesディレクトリまでのパス

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *DocumentsDirPath = [paths objectAtIndex:0];

Documentsディレクトリまでのパス

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirPath = [paths objectAtIndex:0];

ファイルを保存したり、管理する場合、通常これらどのディレクトリにしても配下に新しいディレクトリを用意して管理することになる。
そこでNSFileManagerを使用して、新しいディレクトリを作り、imageファイルを保存する方法をおさらい

今回は、Documentsディレクトリ配下にsampleDirectoryというディレクトリを作る。

viewdidloardとかに
Asset catalogで指定した画像をimageに入れる(Asset catalogに入れた場合、画像は消去してok)

UIImage *image = [UIImage imageNamed: @"dog"];
    NSData *imageData = UIImagePNGRepresentation(image);


ディレクトリ作成の前に新しく作るディレクトリまでのpathを取得する。

NSString *newDocumentsDirPath = [DocumentsDirPath stringByAppendingPathComponent:@"sampleDirectory"];


この時点ではまだpathを取得しただけ。実際にディレクトリは存在しない

NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error = nil;

//ディレクトリを作る
    BOOL created = [fileManager createDirectoryAtPath:newDocumentsDirPath withIntermediateDirectories:YES attributes:nil error:&error];
    
    if(!created){
    
        NSLog(@"作れなかったよ");
    }


stringByAppendingPathComponentメソッドを使用して、ディレクトリ配下にdog.igoファイルを追加したpathを取得しwriteToFileメソッドでファイルを書き込む

NSString *filePath =  [newDocumentsDirPath stringByAppendingPathComponent:@"dog.igo"];

[imageData writeToFile:filePath atomically:YES];

 ```

自作アプリのUrlスキーマを設定

自作アプリをサファリなどの他のアプリから開く

プロジェクトのターゲットをクリック URL Types で設定 identifier と URL Schemes を設定。Identifierは Bundle Identifierと同じで良い

f:id:ichi6161:20170416225506p:plain

plistには自動で値が入る f:id:ichi6161:20170416225512p:plain

開くときは、設定したUrl Scheme://で開く。
例 stvichi://