2011年9月26日月曜日

ViewControllerの状態変化関数

ViewControllerに関しては、読み込みの状態などにより、
呼び出されるメソッドが異なるようだ。

ViewDidLoad:
    読み込みが完了
ViewDidUnload:
    読み込みがメモリ不足などで終了
ViewWillAppear:
    表示されるタイミング
ViewDidAppear:
    表示されたあと
ViewWillDisappear:
    非表示の時
ViewDidDisappear:
    非表示になった後

状況に応じて使う事でメモリの節約などに役立てたい

2011年9月25日日曜日

アニメーションの設定の方法(前とは別の方法)

前にアニメーションの方法を示したが、
下記のような形式でもアニメーションを実行できるようだ。


-(IBAction)doAnime:(id)sender{
    _imageViwe.alpha = 1.0;
    _imageView.transform=CGAffineTransformMakeScale(1.0,1.0);
    [UIVIEW animateWidthDuration:1.0
        animations:^{
            _imageView.alpha = 0.3;
            _imageView.transform = CGAffineTransformMakeScale(0.4,0.4);
    ]
}

利用できる値に関しては、前にアニメーションを作成した時と同様のようです。

2011年9月24日土曜日

スクロールビューを利用します。UIScrollView

スクロールビューを利用します。

中にコンテンツをはみ出すように設置をすれば、指でのスクロールなどで、コンテンツを見る事ができます。


UIScrollView *scrollView = [[UIScrollView alloc]init];

見える領域:frame
scrollView.frame = self.view.bounds;

実際のコンテンツの領域
scrollView.contentSize = CGSizeMake(self.view.frame.size.width*4,self.view.frame.size.height);


ページング機能ですが、ページ毎にコンテンツが止まる形で移動できるか、
もしくは、ページの境目なく常に滑らかにコンテンツが見れるようにするか。

scrollView.pagingEnabled = YES;

[self.view addSubview:scrollView];

[scrollView release];


中にコンテンツを追加する場合は下記のようにします。
[scrollView addSubview:****];

2011年9月23日金曜日

Tabを利用したインターフェースの切り替え

Tabを利用したインターフェースの切り替え

アプリが別のクラスでできているので、
各画面の通信の仕組みを追加してあげる必要があります。

AppDelegateの中にプロパティを持つ事でグローバル変数として利用ができる。

@interfaceの中に、
NSInteger _count;

と設定をして、
また、propertyとして、


@property(nonatomic,assign)NSInteger _count;

と言う形で定義をしておく必要がある。

また、外部からもアクセスができるように
@implementationの次の行に
@synthesize _count;
に追加をします。

これでpublicとして値が取得できるようになります。


外部からアクセスができるようになったので、
次にこのクラスの変数に外部からアクセスをする方法を考えます。

#import "sampleAppDelegate.h";

と記載をする事で、このクラスをインポートできます。
上記のクラスで何かインスタンスを作成する。

sampleAppDelegate *appDelegate = (sampleAppDelegate *)[[UIApplication sharedApplication]delegate];
である。

ここで作成したappDelegateに関しては、変数が設定してあるので、

appDelegate._count

などで値を取得もしくは、代入が可能である。

2011年9月22日木曜日

画面の切り替えでプロパティの受け渡しを勉強する。UtilityApplication

画面の切り替えでプロパティの受け渡しを勉強する。

■UtilityApplication(表裏が切り替わるアプリ)で、プロジェクトを作成。

MainViewとFlipsideViewで切り替わります。

FlipsideViewで設定した値をMainViewに持ってきてみます。


FlipsideViewで文字要素を作成する。

.hファイルで、文字要素をinterfaceの中で作成
NSString *_str;
@property(nonatomic,retain)NSString *_str;

.mファイルで、
@implementation FlipsideViewControllerの後ろに
@synthesize _str;

を記載。

このファイルから値を送る場合に


-(IBAction)showinfo:(id)sender{

FlipsideViewController _controller = [[FlipsideViewController alloc]
initWithNibName:@"Flipsideiew"
bundle:nil];

controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
//下記の値で、FlipSideViewの変数_strを取得する事ができるようになった。
controller._str

[controller release];
}

2011年9月21日水曜日

タイマーの機能を使ってみる。

タイマーの機能を使ってみる。

NSTimer *_timer = [NSTimer
scheduledTimerWidthTimeInterval:3,
target:self,
selector:@selector(func:),
userInfo:nil,
repeats:YES];

上記は3秒毎に_funcを実行する。

2011年9月20日火曜日

UIViewの機能でアニメーションを行う。

UIViewの機能でアニメーションを行う。

ページの中で位置を移動したり、透過度を変更して
フェードインをするなどの動作を行う動作を行う。

step1
部分の初期状態の設定

中央の位置を決める
_iv.center = CGPointMake(x,y)

大きさの設定
_iv.rect = CGRectMake(x,y,width,height);

回転角度の設定
_iv.transform = CGAffineTransformMakeRotation(30 * 2*m_PI/360);

透明度
_iv.alpha = 0.5;

step2アニメーションの設定をする。

開始は
[UIView beginAnimations:nil context:nil];

アニメーションの秒数の設定は
[UIView setAnimationRepeatCount:3]
※0だと無限に繰り返す

開始までの時間
[UIView setAnimationDelay:3];

イージング設定
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
ゆっくり→はやく→ゆっくり:UIViewAnimationCurveEaseInOut
ゆっくり→はやく:UIViewAnimationCurveEaseIn
はやく→ゆっくり:UIViewAnimationCurveEaseOut
一定の速度:UIViewAnimationCurveEaseLiner
の4種類が基本


アニメーションの組み込みの流れ、
//初期設定
_iv.center = CGPointMake(20,20);

//宣言
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2];

//結果
_iv.center =  CGPointMake(50,100);

//出力
[UIView commitAnimations];

2011年9月19日月曜日

UIImageでgifアニメのような切り替えのアニメを作成する

step1
SupportingFilesの中に画像を入れる。

step2
配列を用意する。
NSArray :_array = [NSArray arrayWithObjects:
[UIImage imageNamed:@"a.jpg"],
[UIImage imageNamed:@"b.jpg"],
[UIImage imageNamed:@"c.jpg"],
nil
]

step3
この入れるをImageViewに設定する。
_imageView.animationImages = _array;

step4
次にアニメーションの速度を決める
_imageView.animationDuration = アニメーションの速度

step5
アニメーションの繰り返し回数を設定する。
_imageView.animationRepeatCount = 2;

0を設定すると、無限に繰り返す。

step6
アニメーションを開始数r。
[_imageView startAnimating]

step7
アニメーションの停止
[_imageView stopAnimationg]

2011年9月18日日曜日

UIImageViewで画像を表示する。

UIImageViewで画像を表示する。

step1
AddFilesと言う項目でSupporting Filesの中に右クリックで入れる。

step2
UIImageViewを設置したら、プロパティの画面から
プルダウンメニューで好きな画像を入れる事ができます。

step3
画像のサイズの設定を下記を設定する事で好きなサイズで実現する事ができる。

scaleToFill
縦横ぴったり会う。
Aspect FIt
大きくなるが余白ができる。
AspectFill
大きくなるが、トリミングされる。


また、画像の設定に関してはプロパティでも変更が可能である。

ex)
_imageView.image = [UIImage imageNamed:@"sample.jpg"];

2011年9月17日土曜日

アクションシートを使いたい。UIActionSheet

アクションシートを使いたい。

アクションシートとは、
いくつかの選択肢を表示させるデフォルトのインターフェース。
下から表示がレイヤーで出る仕様の為こちら側でデザインを設定する必要はない。

step1
最初にInterfaceで宣言をする。
@interface sampleController:UIController<UIActionSheetDelegate>{}

step2
タイトル、ボタンの文字、ボタンの数は決めておく。

UIActionSheet _asheeet = [UIActionSheet alloc]initWidthTitle:@"title"
delegate:self
cancelButton:Title:@"Cancel"
destructiveButtonTitle:@"caution"
otherButtonTitles:@"s1",@"s2",nil]

上記で、
destructiveButtonに関しては、ユーザーの注意を促すものを設置する。
押す事でデータが消えてしまうなど。このボタンは自動で一番上に表示がされる。


アクションシートの表示は
[_asheet showView:self.view]

メモリの開放は
[_asheet release]

でボタンが押された場合には、次の関数が表示される。

-(void)_asheet:(UIActionSheet *)_asheet checkedButtonAtIndex:(NSInteger)buttonIndex{

}

buttonIndexの値で
どのボタンが呼ばれたかを判別する。
番号の上から0,1,2,3と言う順番で取得される。

2011年9月16日金曜日

UIAlertViewでアラートの表示をする。

UIAlertViewでアラートの表示をする。

ULAlertView *_alert = [[UIAlertView alloc]
initWidthTitle:@"title"
message:@"mes"
delegate:self
cancelButtonTitle:@"NO"
otherButtonTitles:@"OK",nil]

noなどが必要ない場合にはnilを設定すればOKのみのボタンが作成できる。

また、アラートの表示は
[alert show]
アラート終了後に、メモリの開放は下記で、
[alert release]


値の取得に関しては、
-(void)_alert:(UIAlertView *)alert checkedButtonAtIndex:(NSInteger)buttonIndex{

}


で、buttonIndexが取得できるのだが、OKボタンが押された場合は
buttonIndex = 1;
キャンセルボタンが押されていた場合には、
buttonIndex = 0;

2011年9月15日木曜日

日付を取得UIDatePicker


日付を取得

UIDatePickerでユーザーに日付を決めさせるコンポーネントを利用できる。

このコンポーネントは初期の設定でそれが日付か時間かを決定する事ができる。


■dataPickerMode
月日時分:UIDatePickerModeDateAndTime
年月日:UIDatePickerModeDate
時分:UIDatePickerModeTime
タイマー:UIDatePickerModeCountDownTimer

で、デフォルトで日付を設定しておく為に、
下記のような形式で岸をする。

date = [NSData dateWidthString:@"2011-01-01 00:00:00:+09:00"];

また、時間にする場合に、時計を何分刻みで設定ができるようにするかを調整できる。

minuteInterval = 5;

また、設定できる一番古い時間と一番新しい時間を設定します。

_picker.minimumDate = [NSDate ..]
_picker.maximumDate = [NSDate ..]

上記の形で設定をしておくと指定の時間以外は設定ができないようにできた。

日付に取得に際しては、前もって型が指定できる

NSDateFormatter *_dateFormat = [[[NSDateFormatter alloc]init]autorelease];
_dateFormat.dateFormat = @"yyyy/MM/dd HH:mm";

text = [_dateFormat stringFromDate:_picker.date];

上記のような設定で、取得できる型が設定できた。

2011年9月13日火曜日

スライダーを使ってみる。UISlider

スライダーを使ってみる。

UISliderを使うと
簡単なスライダーを実装が可能である。

まず、最小と最大の値を設定する。

_slide.minimumValue = 0;
_slide.maximumValue = 100;


上記の値の間でスライドの値を取得する事ができるようになる。

また、ピンチをつかんでいる間も、valueChangeなどのイベントを取得するかしないか
を下記のプロパティで設定できる。

_slide.continuous = YES

で取得する。NOでイベントの終了時に、イベントを取得できます。

どちらでも問題ない仕様であれば、終了時に値を取得するように設定を
行う方がメモリの節約になります。

2011年9月12日月曜日

UISwitchのON OFFスイッチ

スイッチ用のコンポーネント

UISwitch
ONかOFFかを判別する事ができる。

基本的には、

_switch.ON = YES;
_switch.ON = NO;

上記のようにYES/NOで設定を行える。

基本的にイベントは

changedでチェンジした瞬間のイベントを
拾う事ができる。

2011年9月11日日曜日

UITextViewで長い文字列を表示する。


UITextViewは長い文字列を入れるのに適したインターフェースで、
文字列の長さに従う形で、スクロールバーが出る。

Editableと言うプロパティで編集可能か、不可能か設定が可能である。

keyboardTypeを利用する事で下記の中から
ユーザーの入力にあわせたキーボードを選ぶ事ができます。
デフォルト:UIKeyboardTypeDefault
英字:UIKeyboardTypeASCIICapable
URL:UIKeyboardTypeURL
メール:UIKeyboardTypeEmailAddress
数字:UIKeyboardTypeNumberPad
電話番号:UIKeyboardTypePhonePad


2011年9月10日土曜日

UITextFieldで利用できるプロパティ

UITextFieldで利用できるプロパティ

UITextFieldではただのテキスト入力だけでなく
さまざまな設定が可能です。

下記にUITextFieldのプロパティをまとめました。

1、text
デフォルトで入っている文字の指定です。

2、placaholder
ここに文字を入力してくださいのようなユーザーをサポートする文言

3、キーボード設定
default:通常のキーボード
url:url入力に特化したキーボード
Number:数値入力用キーボード


4、リターンキーの文言
リターンキーに入る言葉もいくつかの文言から選ぶ事ができます。
Go Search Send Don

5、色の設定:textColor
[UIColor blueColor]

などと言う形で、いくつかのプロパティを設定できるようです。





2011年9月9日金曜日

コンポーネントの配置など一連の流れ

コンポーネントを配置する事でデザインを作成していきます。

基本の考え方として
ボタンを押して何かをしたい場合には、

まず、sampleViewControll.hファイル内で
ボタンと押した場合の動きの関数を定義します。定義をします

xibファイルでコンポーネントの設置を行ったら、
.hファイルでの定義にむすびつけます。
※結び付け方に関しては、利用のバージョンによって異なるかと思います。

.mファイルで、
押した場合の動きの関数の中身の記述などをします。

ほとんどの動作に関してはこのような流れ
で作成ができます。

2011年9月8日木曜日

プロジェクトファイルを作成すると自動でできるファイルの説明

プロジェクトnameがsampleの場合

1、sampleViewControll.xib
画面のデザインを作成するファイルです。

2、
sampleViewControll.h
sampleViewControll.m
アプリの基本的な動きやデザインを制御する。
.hはヘッダーファイルなので、定義を主にして
.mはメインファイルとして、細かい設定などを行います。

3、
sampleAppDelegate.h
sampleAppDelegate.m
アプリの基本動作の起動周りで動く部分を記述する。

2011年9月7日水曜日

XCODEを使ってプロジェクトを作成していく

プロジェクトを作成する際に、
アプリにあった、テンプレートを利用する事で、開発の手間をかなり軽減する事ができる。

1、view-based Application
シンプルで、用意されているのは1つのviewのみ

2、utility Application
表裏の2つのviewがあり、ボタンひとつで移動をする事ができる、
また、デフォルトで切り替えの際に回転をするような動きをする。

3、tabBarApplication
ビューが複数存在し、画面下部にあるタブをタップすると、
画面が切り替わる。

4、Navigation_based Application
ビューが複数枚存在して、階層的に画面推移するアプリが作成できる。

5、OpenGL ES Application
OpenGL ESを利用する時用のテンプレートです。

6、split view-based Application
ipad用のテンプレートです。

7、Window-based Application
windowだけでviewがなく最低限の機能のみをもったテンプレート

2011年9月6日火曜日

オブジェクトとを作成する。

dictionaruクラスとほぼ同じような仕様です。

_obj.time = 30;

上記のように簡単に格納ができる。


またdictionaryのクラスと異なるのは、

[_obj _func]

と言う形にすれば、
objectの中にいれた関数を実行する事ができる。

また、引数はコロンの後ろに追加する。

[_obj _func:@"a"];

2011年9月5日月曜日

条件分岐

if(条件分岐式){
}

上記の形で、条件分岐が可能になうのだが、

a==b

が同じ値であるのに、異なる場合がある。

a = 1;

b = 1;

の場合には
if(a == b)は実行される。

a = @"apple";
b = @"apple";
※この書き方は示すもので正しくない

である場合に、if(a==b)が実行されない場合がある。

これは、ポインタの考え方にある。
aとbは、文字列を保持している場合には、文字列そのものを保持しているのでなく、文字列のデータの格納場所を示している。

この場合に、中身は同じだけど、保存場所が違えば、違うものであると判別される。

値のみを純粋に比べる場合には、

[_a isEqual:b]

と条件を書くと格納の場所にかかわりなく、純粋な値のみを判別してくれる。

2011年9月4日日曜日

Dictionaryクラスを使う。

基本的にObjectと同じであるが。

keyを用意してkeyに対応する値が存在する。

NSDictionary dictionaryWidthObjectAndKeys:@"a",@"apple",@"b",@"beer",@"c",@"cat",nil];

上記のように6つの変数を登録しているが、順番にdictionaryに登録をしている。

a : apple
b : beer
c : cat

と言う形で登録をしている。


登録した値の取得の方法に関しては

[_dictionary objectKey : @"a"]

と言うように設定を行うと

apple

が取得できる。

2011年9月3日土曜日

配列を作成する。

NSArray *_array = [NSArray arrayWithObject:10,10,10,10,nil];

nilで終えるのが一般的である。

配列に含まれる要素の数は、countで取得ができる。

_array.count

、あた配列の中から特定のデータを取り出すには、

[_array objectAtIndex:3];
dでarrayの中の4番目の要素を取得する事ができた。

2011年9月2日金曜日

文字データを組み合わせて文字列を作成する。


_str1とある文字列を合成したい場合に

NSSTring *_str2 = [NSString StringWidthFormat: @"%@付け加えたい言葉",_str1];

とすると、%@の部分が_str1に置き換わるので、
言葉の合成が簡単にできた。

2011年9月1日木曜日

整数の値を文字列にする。

整数の値を文字列にする。

[NSString stringWithFormat :@"%d",202]

と言う形にすると、%dの値が数値の文字列に置き換わる。

数値(少数も含む)を文字列に変更する場合には、


[NSString stringWithFormat :@"%f",111.45]

上記の形にすると、小数点も含んだ形で、文字列を生成できます。

以上です。

ポインター変数を利用する。

文字列などを作成する場合に、保存領域を用意してあげる必要があり、
その保存領域と文字変数を結びつけるのが、pointerである。

文字列を作成の時には

*_str

で定義をし

_str

で利用をする。


作り方を順番に説明をしていきます。

step1:初期化

NSString *_str = [[NSString alloc]initWidthString:@"文字列"]
allocとは文字の保存領域を確保する宣言である。
また、文字列を作成する場合にはコーテーションマークの前に@を用いて、
この後ろの部分が文字列である事を示している。


step2:使用後は開放する。

[_str release]
で利用している使用メモリを開放する事ができる。


step3:自動開放の設定

step2で実装したメモリの開放であるが、中には、つけるのが難しい変数などもある。
その為、コンピューターに自動での開放をお願いする機能がある。
NSString *_str = [[[NSString alloc]initWithString:@"文字列"]autorelease];


step4:step1,step3をまとめたものを以下であらわせる。

NSString *_str = [NSString StringWithString:@"文字列"];


開放のタイミングは自分で決めた方がより細かな メモリのチューニングが可能になるが基本的には、autoreleaseに任せてしまったほうがよいかもしれません。

2011年8月31日水曜日

Objective-Cのはじめの一歩

文法

■セミコロンで終わる。
割とどの言語でも一般化している景気であるが、セミコロンまでで一文として認識をする。

■変数を作成する。
変数に関しては、数字の型のみ作成ができる。(文字列の作成などは別途記載)
基本的には、javaと同様に

int _i = 0;

で作成ができる。※型 変数 = 値

■BOOL値を設定する。
Boolの値に関しては、true/falseではなく、YES /NO
で判別をする。

また、数値を利用する場合には、1/0

次回は文字変数を勉強します。

2011年8月30日火曜日

Xcodeを使う。

Xcode自体は無料である、開発環境であり、多くのサイトや、書籍でリファレンスが存在するので、
一度、ダウンロードをしてみるとよいと思う、


意外にも感覚で使える機能が多い為にそこまで苦労をしない。
また、iphone開発用を選べば、iOSシュミレータとの連携もしてくれるために、
開発の際のデバッグなどは、PC内でもスムーズに行う事ができる。

次回よりプログラムについて記載をしていく。

2011年8月29日月曜日

iphoneアプリの作成をはじめました。

以前はflashを使ったAIRで開発をしていました。

ですが、断念をしました。

FLASH AIRでiphoneアプリ開発

その為にobject-cを勉強を行う為にこのサイトを作成してみました。

どうぞ、よろしくお願いいたします。

また、androidではjavaの制作も行っております。

下記サイトもよろしくお願いいたします。

素人のandroidアプリ開発日記