Category Archives: iOS SDK

iOS 9のUIWebViewがとても残念で困る

0
Filed under iOS SDK, トラブルシューティング
Tagged as ,

気になる挙動(バグ?)があちこちにあるiOS 9のUIWebViewについて、twitter等で見つけた情報をまとめていきます。(なにか分かれば追記していきます)

まとめ

分かりやすいように、最初に箇条書きをまとめておきます。

  1. iOS 9のUIWebViewでは基本的に、強制HTTPS通信!
  2. iOS 9のUIWebViewではHTTP通信したい場合はATSまわりを設定する
  3. CSSのチルダ(~)セレクタが使えなくなった
  4. UIWebViewのwindow.locationがページ遷移に併せて変わらなくなった
  5. htmlのmetaタグのviewportのcontentには”devie-width”を入れるといいらしい

(2015/09/22 更新)

ATS(App Transport Security)関係

『iOS 9のUIWebViewでは、HTTPS通信が基本となる』というのが、Apple Transport Security、通称「ATS」というものです。
事前に開発者には通告されていたし、下記のようなまとまった情報もあるので、必見です。
■[iOS 9] iOS 9 で追加された App Transport Security の概要 | Developers.IO

ということですが、
「まぁ、全部OKにするオプションがある」ということを知っていたので、それで当面はいいだろう、と思っていました。
が、実際にiOS9で使ってみると、なんかおかしい!という感じが出てきたので、調べてみた、というのが今回のブログエントリです。
主に、twitterで情報収集してみました。

UIWebView関係


そうなんです!
実際に使ってみて驚いたのがこれ。。


私も、例外とかクラッシュじゃなく変な止まり方に遭遇しています。。
そう、jsからUIWebView経由でネイティブのUIが動くときが、何か怪しいのです!


Ionicは、Cordova+Angularのフレームワークらしいです(知りませんでした)が、Angular関係でも何か問題あるようですね。


あ、これか!
【iOS 9のUIWebView】では、【CSSのチルダ(~)セレクタ】が使えなくなった、ということらしいですね!!!

↓こちらの記事がまとまっているようです。
■Preparing for iOS 9 | The Official Ionic Blog
前述したIonicの開発者ブログですが、これを読むとさらに闇は深いことが判明!

同ブログの別エントリで詳しく書かれていますが、なんと、UIWebViewのwindow.locationがページ遷移に併せて変わらなくなった、という問題もあるようです!
■iOS 9 Potential Breaking Change | The Official Ionic Blog

その他の問題

AppleのDeveloper Forumからメモ。
HTMLのレイアウトの問題らしい。
■UIWebView layout in iOS 9 | Apple Developer Forums

<meta name="viewport" content="initial-scale = 1.0”>
↑じゃなくて、↓をのように、device-widthをいれるといいよ。
<meta name="viewport" content="width = device-width, initial-scale = 1.0”>

これは軽微な感じですね。

というわけで、

拙訳:『UIWebViewは壊れてるし、WKWebViewは制限ばっかだし、WebViewControler(訳者注:SFSafariViewControllerのこと?)はラッパー作りたい人には向かないし、つんだ。』

同感。

いや、そんなこと言ってないでやっぱり、WKWebViewに置き換える作業しなきゃ、ですよ>自分


iOSアプリ開発:deprecated対応メモ:NSString

0
Filed under iOS SDK, トラブルシューティング
Tagged as ,

使い勝手がよいオープンソースライブラリでもメンテナンスがされていないと、使われているメソッドが新しいiOS SDKでdeprecated(非推奨)になってしまい、警告が出ることがあります。
昨今は開発している人も多いのでググるとすぐに見つかるのですが、引数が増えていたりして対応がわかりにくいことがあります。
自分でぱっと見で分かりやすいように、メモを残していきたいと思います。

【NSString】 – sizeWithFont:

Warning: ‘sizeWithFont:’ is deprecated: first deprecated in iOS 7.0 – Use -sizeWithAttributes:

・公式リファレンス → sizeWithAttributes: – NSString UIKit Additions Reference

// 素材.
NSString* str = @"hogehoge";
UIFont* myFont = [UIFont systemFontOfSize:14];
 
// OLD.
CGSize size = [str sizeWithFont:myFont];
 
// NEW.
NSDictionary* dicFontAttr = @{ NSFontAttributeName:myFont };
CGSize size = [str sizeWithAttributes:dicFontAttr];

【NSString】 – drawAtPoint:withFont:

Warning: ‘drawAtPoint:withFont:’ is deprecated: first deprecated in iOS 7.0 – Use -drawAtPoint:withAttributes:

・公式リファレンス → drawAtPoint:withAttributes: – NSString UIKit Additions Reference

// 素材.
NSString* str = @"hogehoge";
UIFont* myFont = [UIFont systemFontOfSize:14];
 
// OLD.
[str drawAtPoint:p withFont:myFont];
 
// NEW.
NSDictionary* dicFontAttr = @{
  NSFontAttributeName:myFont,
  NSForegroundColorAttributeName:textColor }; // テキストの色はここで指定.
[str drawAtPoint:p withAttributes:dicFontAttr];

【NSString】 – drawInRect:withFont:lineBreakMode:alignment:

Warning: ‘drawInRect:withFont:lineBreakMode:alignment:’ is deprecated: first deprecated in iOS 7.0 – Use -drawInRect:withAttributes:

// 素材.
NSString* str = @"hogehoge";
UIFont* myFont = [UIFont systemFontOfSize:14];
CGRect rectArea = CGRectMake(0, 0, 320, 50);
 
// OLD.
[str drawInRect:rectArea
       withFont:myFont
  lineBreakMode:NSLineBreakByWordWrapping
      alignment:NSTextAlignmentCenter];
 
// NEW.
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = NSLineBreakByWordWrapping;
style.alignment = NSTextAlignmentCenter;
NSDictionary *attributes = @{
  NSForegroundColorAttributeName:textColor,
  NSFontAttributeName:myFont,
  NSParagraphStyleAttributeName:style
};
[str drawInRect:rectArea withAttributes:attributes];

[AD]↓評判がいいので私も買いました!

基礎からわかる Swift

著者/訳者:坂本 俊之

出版社:シーアンドアール研究所( 2014-11-20 )

定価:

Amazon価格:¥ 2,484

単行本(ソフトカバー) ( 248 ページ )

ISBN-10 : 4863541589

ISBN-13 : 9784863541580


[AD]↓kindle版を買って読んでいます!

iPhone 6と6 Plusは全然違う!(開発者視点で)

0
Filed under iOS SDK, iPhone
Tagged as ,

iPhone 6、6 Plus の解像度と、デザインの話。
当初、ざっくり調べた感じで、だいたい、iPhone5と同じアスペクト比だから特に問題ないかな?と軽く考えていたのですが、実際は、ちょっと様子が違うようです。。
しかも、6とPlusの間で!

PaintCodeブログより

PaintCodeというアプリのブログによると、iPhone 6と、iPhone 6 Plusの間には大きな差があるようです!

http://www.paintcodeapp.com/news/iphone-6-screens-demystified
iPhone 6と6 Plus

iPhone 6は、スケールファクタがx2のまま画面サイズが大きくなったのですが、iPhone 6 Plusは、スケールファクタがx3でレンダリングし、実際のデバイスサイズに縮小しているようです。。
要は、iPhone 6 Plusは、ドットバイドットで画像を指定することが不可能なのです!
まぁ、6 Plusは、Appleデバイスで最大密度の解像度なのでそれはわからないであろう、というか、ドットバイドットで画像を用意する時代じゃないんだよ、ということかな。。。(SVGを使うべきかな、という気もしてくる)

まとめ

まとめると次のようになる。

iPhone 5 では、320×568にレイアウトし、スケールファクタはx2。
iPhone 6 では、375×667にレイアウトし、スケールファクタはx2。
iPhone 6 Plus では、414×736にレイアウトし、スケールファクタはx3、デバイスレンダリング時に縮小処理がかかる。

テストにも使えるよう、今回は端末を購入するのですが、開発のことを考えると、iPhone 6 Plusなんだけど、、実際に持つには大きそうだなー、と悩みが復活。。

とりあえず、iPhone 6かiPhone 6 PlusサイズのiPod touchが出て欲しい。

プロトタイピング実践ガイド スマホアプリの効率的なデザイン手法

著者/訳者:深津 貴之 荻野 博章

出版社:インプレス( 2014-07-11 )

定価:

Amazon価格:¥ 2,970

単行本(ソフトカバー) ( 240 ページ )

ISBN-10 : 484433624X

ISBN-13 : 9784844336242



UIKit徹底解説 iOSユーザーインターフェイスの開発

著者/訳者:西方 夏子

出版社:インプレス( 2014-06-13 )

定価:

Amazon価格:¥ 4,104

単行本(ソフトカバー) ( 448 ページ )

ISBN-10 : 4844336088

ISBN-13 : 9784844336082




PaintCodeは超オススメアプリ!→

UIViewControllerのデバイス回転への対応

0
Filed under iOS SDK
Tagged as ,

調べるたびに困っていたので、ブログにメモしておきます。

iOS6以降専用の対応方法

回転させないためには、下記のようなコードを、UIViewControllerに書けば良い。

// 回転させない
- (BOOL)shouldAutorotate
{
  return NO;
}
 
- (NSUInteger)supportedInterfaceOrientations
{
  return UIInterfaceOrientationMaskPortrait;
}

iPhoneでは回転させず、iPadでは回転対応する、という仕組みを実装したサンプルをgithubにアップしておきました。

上記ケースではUINavigationControllerを使っているのですが、この場合、UINavigationControllerを派生させたクラスで同様に実装すれば対応できます。