プログラミングと音楽とアニメとiPhoneとiPadとMacとAndroidとLogicとギターとテニスと車

アプリ開発系の勉強メモやTipsなどを中心に他いろいろと書いていきます。

UISegmentedControlのタイトルの文字サイズと位置を調整するメモ

UISegmentedControlのタイトルの文字サイズはデフォルトのままでは小さいので、
サイズを任意で指定して、さらにオフセットで位置を微調整。

// _segmentControl はUISegmentedControlのインスタンス変数
[_segmentControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]}
                               forState:UIControlStateNormal];
[_segmentControl setContentPositionAdjustment:UIOffsetMake(0, 2)
                               forSegmentType:UISegmentedControlSegmentAny
                                   barMetrics:UIBarMetricsDefault];


UISegmentedControlSegmentAny はUISegmentedControlのすべてのセグメントを対象とする場合に指定する。
他にUISegmentedControlSegmentLeftやUISegmentedControlSegmentCenterなどもあり、セグメントの位置を指定(例えばセグメントが3つであれば、左だけ、中央だけとか)して調整ができる。

iOSの新言語SwiftでAdMobの実装方法を検証(delegate実装)

前回の続きでAdMobのデリゲートメソッドの実装部分をSwiftで書いた場合のメモです。

import UIKit
// GADBannerViewDelegate を追加
class ViewController: UIViewController, GADBannerViewDelegate {

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        var bannerView: GADBannerView = GADBannerView();

        bannerView = GADBannerView(adSize:kGADAdSizeBanner);

        bannerView.adUnitID = "ここに広告ユニットIDを書く";

        bannerView.delegate = self;

        bannerView.rootViewController = self;

        self.view.addSubview(bannerView);

        bannerView.loadRequest(GADRequest());

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    /****************************************************/
    // 以下、GADBannerViewDelegate の各メソッド

    func adViewDidReceiveAd(adView: GADBannerView){
        println("adViewDidReceiveAd:\(adView)")
    }

    func adView(adView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError){
        println("error:\(error)")
    }

    func adViewWillPresentScreen(adView: GADBannerView){
        println("adViewWillPresentScreen")
    }
    
    func adViewWillDismissScreen(adView: GADBannerView){
        println("adViewWillDismissScreen")
    }
    
    func adViewDidDismissScreen(adView: GADBannerView){
        println("adViewDidDismissScreen")
    }

    func adViewWillLeaveApplication(adView: GADBannerView){
        println("adViewWillLeaveApplication")
    }

 /****************************************************/
}

iOSの新言語SwiftでAdMobの実装方法を検証

Objective-Cで書かれているAdMobをSwiftでどうやって使うのか気になったので検証したメモです。

検証環境

Xcode 6.0 beta
GoogleMobileAdsSDkiOS-6.9.2

手順

1、Xcode6で新規プロジェクトを作成

XcodeのメニューからFile>New>Project>「Single View Application」(ここでは例として)を選択。
Language: の選択ではSwiftを選択してプロジェクトを作成します。


2、AdMobのSDKをプロジェクトに追加
今回はここの詳しい説明は省略します。
基本的に以下の公式情報の通りで導入できます。
AdSupportなど必要なフレームワークの追加とOther Linker Flagsに-ObjCを追加を忘れないようにします。

ダウンロード先
https://developers.google.com/mobile-ads-sdk/download#downloadios

プロジェクトへの追加方法
https://developers.google.com/mobile-ads-sdk/docs/#ios


AdMobについては、そのうち別記事で詳しく紹介する予定です。


3、SwiftからAdMob SDKのコードを呼び出せるようにする

XcodeのメニューからFile>New>File から「Header File」を選択し、
Swift_Bridging_Headerというファイル名(任意)にして、Swift_Bridging_Header.h というファイルを作ります。
Swift_Bridging_Header.h のファイル内に #import "GADBannerView.h" を記述します。

Swift_Bridging_Header.h
#import "GADBannerView.h" 

プロジェクトファイルを選択>TARGETS>Build Settings>Swift Compiler - Code Generation>Objective-C Bridging Header に
$(SRCROOT)/$(PROJECT)/Swift_Bridging_Header.h と書いてパスを追加します。


4、SwiftでAdMobのバナー広告を表示する

import UIKit
class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        var bannerView: GADBannerView = GADBannerView();

        bannerView = GADBannerView(adSize:kGADAdSizeBanner);

        bannerView.adUnitID = "ここに広告ユニットIDを書く";

        bannerView.delegate = self;

        bannerView.rootViewController = self;

        self.view.addSubview(bannerView);

        bannerView.loadRequest(GADRequest());

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }
}

以上で、AdMobのバナー広告を表示することができます。
デリゲートの実装については後ほど続きを書きます。

「Gyazo GIF」&「Gyazo」簡単にGIFアニメーションやスクリーンショットが作成できるアプリ

f:id:travitu:20140531162109p:plain

https://gyazo.com/ja

Gyazo GIF
こちらはGIFアニメーション作成用

Gyazo
こちらは静止画のスクリーンショット

どちらもアプリを起動してデスクトップ上の任意の範囲をドラッグするだけで、
スクリーンショットまたはGIFアニメが作れます。

自分のGitHubにデモアプリを公開する時に、アプリの動きも見せたかったのでGyazo GIFを使いました。
https://github.com/travitu/TRACustomWindow

他のアプリのパッケージ名の取得方法

Androidインテントを使って特定のアプリを起動したい場合などに、
起動したいアプリのパッケージ名を調べることができます。
以下はLogにパッケージ名の一覧を書き出しています。

PackageManager pm = this.getPackageManager();
List<ApplicationInfo> list = pm.getInstalledApplications(0);
for (ApplicationInfo appInfo : list) {
     Log.d("TAG","appInfo.packageName:"+ appInfo.packageName);
}

独自のポップアップ表示が簡単に実装できるライブラリを公開しました。

TRACustomWindow

https://github.com/travitu/TRACustomWindow

f:id:travitu:20140528132407g:plain

作った理由
既に同じようなライブラリはありましたが、以下の条件をよい感じに満たしてくれるものが見当たらなかったので作りました。

  • 画面のどこをタッチしてもポップアップが消えるようにしたい
  • ポップアップのアニメーションがiOS標準の動きになるべく近いものにしたい
  • 画像やボタンを簡単にカスタマイズできるようにしたい


使い方
ライブラリをダウンロードして、以下の4つのファイルを含んだ TRACustomWindow フォルダごとプロジェクトに追加します。

  • TRACustomBaseView.h
  • TRACustomBaseView.m
  • TRACustomUIWindow.h
  • TRACustomUIWindow.m

f:id:travitu:20140528145234j:plain

使いたいViewControllerのヘッダーファイルに
#import "TRACustomUIWindow.h" と TRACustomUIWindowDelegate を追加します。

ポップアップを表示したい箇所で以下のメソッドを呼び出します。

[[TRACustomUIWindow sharedInstance] showWindow];
[[TRACustomUIWindow sharedInstance] setDelegate:self];

画面のタッチでポップアップを消したくない場合は、ポップアップ表示の時に以下のメソッドを追加します。

[[TRACustomUIWindow sharedInstance] setEnableBaseViewTouch:NO];

ボタンのタップでポップアップを消したい時は以下のメソッドを呼び出します。

[[TRACustomUIWindow sharedInstance] hideWindow];


デモのプロジェクトも一緒に見てもらえれば簡単に導入できると思います。
https://github.com/travitu/TRACustomWindow

待望の頭文字D 最終話Final Stageが放送始まっていた!そして、、、

今日テレビを見てたらあのイニシャルDのCMが流れてきました。最終話のアニメ化はいつなのかと思いながら1年くらい経っていて忘れていましたが、ついに放送が始まってDVD発売と映画も公開されるみたいで、楽しみが1つ増えました。

最終話Final Stageの放送スケジュール

http://www.animax.co.jp/special/initial-d/

そのDVD発売

http://www.amazon.co.jp/頭文字-イニシャル-Final-Stage-Vol-1/dp/B00ITKL19M

新劇場版公式サイト

http://initiald-movie.com

ちなみにFinal Stageのオープニングとエンディングの曲はこれみたいです。

https://www.youtube.com/watch?v=BTm6hNZnQKI