2015年2月2日月曜日

[iOS]iOS7以降のStatusbar、Navigationbar、Toolbarのメモ

//ProjectAppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    float version = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (version >= 8.0) {
        //iOS8でtoolbar naigationbarの透過をオフにする
        //iOS7ではsetTranslucentでBOOLを受け付けないのでクラッシュする
        [[UINavigationBar appearance] setTranslucent:NO];
        [[UIToolbar appearance] setTranslucent:NO];
    }
    return YES;
}

//ViewController
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
   
    isHidingStatusBar = YES;
    //iOS7 ステータスバーの表示/非表示切り替え
    //navigationBarHidden toolbarHiddenを呼び出した時にも呼ばれる
    [self setNeedsStatusBarAppearanceUpdate];
    //iOS7
    self.navigationController.navigationBarHidden = YES;
    self.navigationController.toolbarHidden = YES;

    [self.navigationController.navigationBar setBarTintColor:[UIColor blackColor]];
    [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
    [self.navigationController.navigationBar setTranslucent:YES];
    [self.navigationController setNavigationBarHidden:NO];
    
    [self.navigationController.toolbar setBarTintColor:[UIColor blackColor]];
    [self.navigationController.toolbar setTintColor:[UIColor whiteColor]];
    [self.navigationController.toolbar setTranslucent:YES];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    //[[[UIApplication sharedApplication] keyWindow] tintColor]は変更がない限りデフォルトカラー
    [self.navigationController.navigationBar setBarTintColor:[[[UIApplication sharedApplication] keyWindow] tintColor]];
    [self.navigationController.navigationBar setTintColor:[[[UIApplication sharedApplication] keyWindow] tintColor]];
    
    [self.navigationController.toolbar setBarTintColor:[[[UIApplication sharedApplication] keyWindow] tintColor]];
    [self.navigationController.toolbar setTintColor:[[[UIApplication sharedApplication] keyWindow] tintColor]];
}


//setNeedsStatusBarAppearanceUpdateで呼び出される
- (BOOL)prefersStatusBarHidden {
    //ステータスバーの表示/非表示をBoolで指定
    return isHidingStatusBar;
}

//setNeedsStatusBarAppearanceUpdateで呼び出される
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
    //アニメーションの設定
    return UIStatusBarAnimationFade;
}

2015年1月20日火曜日

[iOS]iOS7で文字列のサイズを求める

//iOS6まで、非推奨
CGSize size = [textLabel.text sizeWithFont:[UIFont systemFontOfSize:fontSize]
                         constrainedToSize:textLabel.size
                             lineBreakMode:UILineBreakModeWordWrap];
//iOS7
CGSize size = [textLabel.text boundingRectWithSize:textLabel.size
                                           options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin
                                        attributes:@{NSFontAttributeName:textLabel.font} context:nil].size;

2015年1月15日木曜日

[iOS]iOS7以降のModalView呼び出しと解放

float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 7.0)  {
    //iOS7以降
    //呼び出し
    [self presentViewController:vc animated:YES completion:nil];
    //解放
    [self dismissViewControllerAnimated:YES completion:nil];
} else {
    //iOS6以前
    //呼び出し
    [self presentViewController:vc animated:YES];
    //解放
    [self.parentViewController dismissModalViewControllerAnimated:YES];
}

2015年1月14日水曜日

[iOS]iOSのバージョンを調べる

float version = [[[UIDevice currentDevice] systemVersion] floatValue];
    
if (version >= 8.0)  {
        
} else {
        
}

2014年12月11日木曜日

[Android]別アプリにIntentで画像を送る

今のほとんどのアプリにある共有ボタンにresフォルダ内にある画像をつける
Uri imageUri = Uri.parse("android.resource://" + getPackageName() + "/drawable/" + "imageName");

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(intent);

2014年12月9日火曜日

[Titanium]モジュールのビルドができない

Titaniumでモジュールを作成する時に、
build>class>"クラスパス">hoge.class
というファイルが生成されるが
このファイル、Titanium Stadioのビルド>クリーンでは削除されないので
クラスを作成した後にリネームをするときは手動で削除する必要があるようだ。

2014年11月23日日曜日

[Unity]EasyTouchを使う

Unity 4.6.0b20
EasyTouch 3.1.10
  1. EasyTouchをインポート
  2. pluginsフォルダはプロジェクトのルートになければならない
  3. ツールバー > Tools > Hedgehog Team > EasyTouch > Add EasyTouch for C#
    HierarchyにEasyTouchが追加される
  4. HierarchyのEasyTouchを円卓Auto-SelectProperties > Pickable LayersをDefaultにする
  5. タップしたいオブジェクトに以下のコードのスプリクトを追加
    オブジェクトにはColliderが必要
using UnityEngine;
using System.Collections;

public class TapSample : MonoBehaviour
{
 //シングルタップを登録
 void OnEnable()
 {
  EasyTouch.On_SimpleTap += On_SimpleTap;
 }
 
 //登録の解除
 void OnDisable()
 {
  UnsubscribeEvent();
 }
 
 //登録の解除 
 void OnDestroy()
 {
  UnsubscribeEvent();
 }
 
 void UnsubscribeEvent()
 {
  EasyTouch.On_SimpleTap -= On_SimpleTap; 
 }
 
 //タップ時に通知を受け取る
 private void On_SimpleTap(Gesture gesture)
 {
  if (gesture.pickObject == gameObject) {
   //タップ時の処理
  }
 }
}