2013年4月22日月曜日

UIImageVIewで画像を貼付けると歪む

皆さん画像をviewに貼付ける時は、以下のようなコードを利用すると思います。

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 240)];
[imageView setImage: [UIImage imageNamed:@"hoge.png"]];
[[self view] addSubview:imageView];

ただ、この方法でうまく行くのは画像サイズが320x240の時だけで、その他のサイズの場合は、勝手に伸び縮みしてしまいます。

「ちょっと見苦しい」だけですめばいいのですが、人間の画像の場合は後から何を言われるかわからないのでヒヤヒヤものです。

そんな場合は1行コードを足してあげましょう。
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 240)];
[imageView setContentMode:UIViewContentModeScaleAspectFit]; // ここを追加
[imageView setImage: [UIImage imageNamed:@"hoge.png"]];
[[self view] addSubview:imageView];

ContentMode プロパティに UIViewContentModeScaleAspectFit を設定するだけで、勝手にアスペクト比を保った拡大縮小をしてくれます。


※この手法は、webなどから画像を引用してきた際などの画像サイズが一定では無い場合に有用です。最初から画像のサイズがわかっている場合は、面倒臭がらず画像修正ソフトでリサイズする事をオススメします。

2013年4月9日火曜日

【朗報】AppleDeveloperで一度登録したAppIDが消せるようになりました。

前々より、AppleDeveloperで登録したAppIDが削除できないという事で、テスト的に登録したAppIDが目障りで仕方なかったそこのあなた!朗報です。消せるようになりました。

https://developer.apple.com/membercenter/index.action

消せるAppIDの条件は「AppStoreで公開しているアプリで利用していない事」だと思いますので、
出来心で登録してしまったIDは消せる模様です。

削除の仕方は以下の通り。

  1. AppleDeveloper MemberCenter にログイン
  2. Certificates, Identifiers & Profiles にアクセス
  3. Identifiers にアクセス
  4. App IDs にアクセス
  5. 消したいAppID の行を選択
  6. Settings ボタンを押下
  7. 下の方に Delete ボタンが配置されています
簡単!



さきほどAppleから、「See what's new in Member Center.」とメールが来て気づいたので、今日(2013/04/09)からだと思います。

操作画面のスクショがあれば分かりやすいのでしこしことブログに貼り付ける準備をしていたのですが、
「あれ、これってログイン後の画面だから勝手にアップするのは危険だな。。。」って思ってやめました(^^;)

2013年4月2日火曜日

nend広告で"IE430: Ad is out of stock. info"エラーがでて広告が表示されない。

nend広告で、以下の様なエラーが出る場合があります。

[nendSDK Error] IE430: Ad is out of stock. info[statuscode=501].

これは、広告切れの場合に表示されるエラーだそうなのですが、複数のiPhoneで試しても1台だけこのエラーが吐き出され、広告が表示されないという場合がありました。

私の場合は、その対象のiPhoneを英語モードにしていた事が原因でした。

nend広告は日本の業者ですし、英語広告のストックがそうそう無い事にはうなずけます。
(これは、私の場合の解決策ですので、英語広告のストック切れというのは仮説です。)

iOS6のUITableViewで背景色が変わらない

iOS5でUITableViewの背景処理を変更する場合、以下の様なコードで背景色を変更します。

[[self tableView] setBackgroundColor:[UIColor redColor]];


ですが、このコードではiOS6の背景色は変わりません。
以下の様にする必要があります。

[[self tableView] setBackgroundView:nil];
[[self tableView] setBackgroundColor:[UIColor redColor]];

一旦、背景ビューを nil にしてしまわないと、背景ビューの方が優先されてしまい、背景色の変更が表示されません。
おそらく、背景色を設定しているビューの上に、背景ビューを載せているのでしょう。

色変更をしたい場合ですから、ビューの方を nil にしても問題ありません。
iOS5でも特別エラーやワーニングも出ません。

2013年3月29日金曜日

iPhoneアプリアップ時に4インチのスクリーンショットを要求される

iPhoneアプリをiTunes Connectでアップする際に、アップはできるがエラー表示になる場合があります。

これはスクリーンショット画像に4インチの画像が無い場合に発生しますのでご注意ください。




というのがiPhone5が発売されてからの開発者界隈のお話だったのですが、
本日仕事で、半年近く放置していたアプリをアップロードしたところ、4インチ画像が無いにも関わらず、エラーは無く「Waiting For Review」の表示に・・・

変更になったのかも知れません。

2013年3月24日日曜日

UIScrollViewでバウンドしない様にする

UIScrollViewではデフォルトでスクロール時にバウンドするように設定されていますが、
これはUI上おっさんには厳しかったりします。(参照)


UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,240)];

[scroll setBounces:NO];

バウンドをする事によって、ボタン等のタッチをしてもらいたい箇所がずれますので、誤タッチをまねきます。
誤タッチの先が広告くらいなら、まぁなんとも無いのですが、
業務アプリ等の場合は使用者のミスでありながら、アプリのせいになる事は日常茶飯事です。

私事ですが、SIer勤務していた際に顧客にトリプルクリックを出来るおっさんがいて、旅費の精算が2重に出来てしまうというトラブルがありました。

また、別の会社ではクアドロプルクリックというスキルを持つおっさんにあった事もあります。(さすがにこれは1人しか知りませんが・・)

スクロールがバウンドするというUIは非常に表示効果が高く、個人的には好きなのですが、利用ユーザがおっさん層以上の年配者にターゲティングするばあいは、設定しておいた方が良いかと思います。

また、バウンドするのがデフォルトで設定されているという事はAppleがそれを推奨しているからに違いなく、出来る事なら外したくはないものです。。。

UIScrollViewをページ単位でスクロールさせる


ギャラリー系のアプリを作りたい時にUIScrollViewをページ単位でスクロールしたい時があると思います。

そんな時、画像の途中でスクロールが止まってしまうと不格好ですので、ページ単位でスクロール出来るように設定しましょう。


UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,240)];

[scroll setPagingEnabled:YES];

これだけです、簡単ですね。