home > Objective-C

[Objective-C] CIFilter

April 24, 2013

iOS5から使えるようになったCIFilterを使った簡単な画像加工

// ソース画像を準備
UIImage *source = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"IMG_0001" ofType:@"JPG"]];
CIImage *filteredImage = [[CIImage alloc] initWithCGImage:source.CGImage];

// CIFilterを作成し、ソース画像とエフェクトのパラメータをセットする
CIFilter *filter = [CIFilter filterWithName:@"CIVignette"];
[filter setValue:[NSNumber numberWithFloat:1.0] forKey:@"inputIntensity"];
[filter setValue:[NSNumber numberWithFloat:2.0] forKey:@"inputRadius"];
[filter setValue:filteredImage forKey:@"inputImage"];
// 結果を取り出す
filteredImage = filter.outputImage;

/*
// CIFilterはチェーンが可能。コメント外すとCIVignetteが二重にかかる
[filter setValue:filteredImage forKey:@"inputImage"];
filteredImage = filter.outputImage;
*/

// CIImageをUIImageに変換する
CIContext *ciContext = [CIContext contextWithOptions:nil];
CGImageRef imageRef = [ciContext createCGImage:filteredImage fromRect:[filteredImage extent]];
UIImage *outputImage = [UIImage imageWithCGImage:imageRef scale:1.0f orientation:UIImageOrientationUp];
CGImageRelease(imageRef);

// 表示
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[imageView setImage:outputImage];

[self.view addSubview:imageView];

参考サイト
http://qiita.com/items/6dc6e1d67cbd58cb2318
http://d.hatena.ne.jp/shu223/20111117/1321496682
http://hamken100.blogspot.jp/2011/12/ios5cifilter.html
http://news.mynavi.jp/column/objc/071/index.html


Permalink | Comments (0)

[Objective-C] 他クラスのメソッドを呼ぶ時

action.mファイル
kekka *viewController = [[kekka alloc] initWithNibName:@"kekka" bundle:nil];

kekka.mファイル

- (void)showNext
{
NSLog(@"showNext");
}

action.mからkekka.mのshowNextにアクセスする場合
[viewController showNext];
とかきます。


Permalink | Comments (0)

[Objective-C] CGRect、CGPoint、CGSize

January 07, 2013

CGRect
対象オブジェクトの位置とサイズの両方を管理するクラスです。
生成するには、CGRectMakeを使用し、引数には「位置x, 位置y, 幅, 高さ」の順で指定します。

// CGRectの生成
CGRect rect = CGRectMake(0, 0, 100, 80);
// 位置x、位置y、幅、高さ全て0のCGRectを生成する
CGRect rect = CGRectZero;

CGPoint
対象オブジェクトの位置を管理するクラスです。
生成するには、CGPointMakeを使用し、引数には「位置x, 位置y」の順で指定します。

// CGPointの生成
CGPoint point = CGPointMake(200, 300);

CGSize
対象オブジェクトの位置を管理するクラスです。
生成するには、CGPointMakeを使用し、引数には「位置x, 位置y」の順で指定します。

// CGSizeの生成
CGSize sz = CGSizeMake(100, 50);

参考サイト
http://iphone-tora.sakura.ne.jp/uikit_size.html


Permalink | Comments (0)

[Objective-C] NSArray 配列

// リストを作成する
NSArray *nozomi = [[NSArray arrayWithObjects:@"東京", @"品川", @"新横浜",
@"名古屋", @"京都", @"大阪", nil] retain];

// リストに含まれる要素数を取得する
int cnt = [nozomi count];
 cnt → 6// リストの4番目の要素を取り出す

NSString *str = [nozomi objectAtIndex:3];
 str → 名古屋// リストの最後の要素を取り出す

NSString *str = [nozomi lastObject];
 str → 大阪// リストに「福岡」が含まれているか判定する

BOOL flg = [nozomi containsObject:@"福岡"];
 flg → NO

参考サイト
http://iphone-tora.sakura.ne.jp/nsarray.html


Permalink | Comments (0)

[Objective-C] NSLog ログ書出し

文字列

NSLog(@"hoge");

配列

NSArray *array = [NSArrayarrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"%@", array);

 %@ :Objective-Cのオブジェクト(NSStringとか)
 %d :整数(intとか)
 %f :浮動小数点(doubleとかfloatとか)
    %.3fと指定することで桁数を指定できる
 %s :言語の文字列(NULLターミネートされた文字列)

参考サイト
http://appteam.blog114.fc2.com/blog-entry-172.html


Permalink | Comments (0)

[Objective-C] 文字列(NSString)の処理

方法1 : stringWithFormat:メソッドを使う


NSString*str1 =@"Hello";
NSString*str2 =@"World";
NSString*str3 = [NSStringstringWithFormat:@"%@ %@", str1, str2];
NSLog(@"str3 = %@", str3);

実行結果
2012-04-21 06:28:13.831 StringTest[32624:f803] str3 = Hello World
    
方法2 : stringByAppendingString:メソッドを使う

NSString*str1 =@"Hello";
NSString*str2 = [str1 stringByAppendingString:@" World"];
NSLog(@"str2 = %@", str2);
  
実行結果
2012-04-21 06:27:37.572 StringTest[32572:f803] str2 = Hello World


参考サイト
http://akio0911.net/archives/11465


Permalink | Comments (0)

[Objective-C] メソッドの定義と実行

1.戻り値も引数もないメソッドの場合


//メソッドを定義
- (void)hogeMethod;
{
//処理
}
[test hogeMethod]; //メソッド呼び出し

2.戻り値があって引数がないメソッドの場合


//戻り値がNSString型のメソッドを定義
- (NSString *)hogeMethod;
{
//処理
}
NSString *result = [test hogeMethod];

3.引数が1つあって戻り値がないメソッドの場合


//引数がNSString型のメソッドを定義
- (void)hogeMethod:(NSString *)argString;
{
//処理
}
[test hogeMethod:@"hogehoge"]; //hogehoged文字列を引数としてメソッド呼び出し

4.引数が1つと戻り値があるメソッドの場合


//戻り値がNSString型、引数がNSString型のメソッドを定義
- (NSString *)myMethod:(NSString *)argString;
{
//処理
}
NSString *result = [test myMethod:@"hogehoge"];

5.引数が2つと戻り値があるメソッドの場合


//戻り値がNSString型、引数がNSString型とint型の2つあるメソッドを定義
- (NSString *)myMethod:(NSString *)argString myInt:(int)argInt;
{
//処理
}
NSString *result = [test myMethod:@"hogehoge"myInt:123]; //メソッド呼び出し

- (void)setWidth:(int)argWidth 
height:(int)argHeight
depth:(int)argDepth;
{
//処理
}
[test setWidth:5height:6depth:7] //メソッド呼び出し

メソッド定義の最初の「-」はインスタンスメソッドの定義の場合に付加する。
先頭の記号が「+」の場合はクラスメソッドの定義となる。
例えば、クラスの初期化手続きで利用するallocメソッドやinitメソッドなどが代表的なクラスメソッド。

参考サイト
http://opendevlog2.blogspot.jp/2012/03/objective-c.html


Permalink | Comments (0)

[Objective-C] UIColor



// 色の割合を指定して生成する場合
UIColor *color = [UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:1.0];
// 定義済みの色を指定して生成する場合
UIColor *color = [UIColor whiteColor];
// 画像を指定してパターンを生成する場合
UIImage *hogeImage = [UIImage imageNamed:@"hoge.png"];
UIColor *color = [[UIColor alloc] initWithPatternImage:hogeImage];
// 生成済みのUIColorに透過率のみ指定する場合
UIColor *color = [UIColor blueColor];
UIColor *acolor = [color colorWithAlphaComponent:0.5]; //透過率50%

参考サイト
http://iphone-tora.sakura.ne.jp/uicolor.html


Permalink | Comments (0)

[Objective-C] UIFont



// スタイル:ノーマル、サイズ:標準
UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
// スタイル:ノーマル、サイズ:24
UIFont *font = [UIFont systemFontOfSize:24];
// スタイル:斜体、サイズ:小さめ
UIFont *font = [UIFont italicSystemFontOfSize:[UIFont smallSystemFontSize]];
// スタイル:太字、サイズ:ボタン用サイズ
UIFont *font = [UIFont boldSystemFontOfSize:[UIFont buttonFontSize]];
// フォント名:AppleGothic、サイズ:標準
UIFont *font = [UIFont fontWithName:@"AppleGothic" size:[UIFont systemFontSize]];
// フォント名:Courier、サイズ:20
UIFont *font = [UIFont fontWithName:@"Courier" size:[UIFont systemFontSize]];

参考サイト
http://iphone-tora.sakura.ne.jp/uifont.html


Permalink | Comments (0)

[Objective-C] UIWebView

// UIWebView例文
UIWebView *wv = [[UIWebView alloc] init];
wv.delegate = self;
wv.frame = CGRectMake(0, 0, 200, 300);
wv.scalesPageToFit = YES;
[self.view addSubview:wv];

NSURL *url = [NSURL URLWithString:@"http://www.yahoo.co.jp"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[wv loadRequest:req];

// ページ読込開始時にインジケータをくるくるさせる
-(void)webViewDidStartLoad:(UIWebView*)webView{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

// ページ読込完了時にインジケータを非表示にする
-(void)webViewDidFinishLoad:(UIWebView*)webView{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

参考サイト
http://iphone-tora.sakura.ne.jp/uiwebview.html


Permalink | Comments (0)

[Objective-C] UIViewにaddSubviewしたものを削除する方法

removeFromSuperview


[_label1 removeFromSuperview];
[_label1 release];

UIView *_sampleView = [[UIView alloc] init];
// _sampleViewを追加する。
[self.view addSubview: _sampleView];

//削除
[_sampleView removeFromSuperview];

Permalink | Comments (0)

[Objective-C] ON/OFF 切り替えスイッチ

UISwitch


// スイッチ例文
UISwitch *swich = [[[UISwitch alloc] init] autorelease];
swich.center = CGPointMake(200, 300);
swich.on = YES;
// 値が変更された時にhogeメソッドを呼び出す
[swich addTarget:self action:@selector(hoge:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:swich];

// 呼ばれるhogeメソッド
-(void)hoge:(UISwitch*)switch{
// ここに何かの処理を記述する
}

UIButton


UIButton* mySwitch = [UIButton buttonWithType:UIButtonTypeCustom];
// OFFの画像設定
[mySwitch setBackgroundImage:[UIImage imageNamed:@"btn_off" forState:UIControlStateNormal]];
// タップ中の画像設定
[mySwitch setBackgroundImage:[UIImage imageNamed:@"btn_off" forState:UIControlStateHighlighted]];
// ONの画像設定
[mySwitch setBackgroundImage:[UIImage imageNamed:@"btn_on" forState:UIControlStateNormal | UIControlStateSelected]];
// タップ中の画像設定
[mySwitch setBackgroundImage:[UIImage imageNamed:@"btn_off" forState:UIControlStateHighlighted | UIControlStateSelected]];
[mySwitch addTarget:self action:@selector(mySwitchDidTap:) forControlEvents:UIControlEventTouchDown];
// 配置
mySwitch.frame = CGRectMake(10, 10, 100, 44);
[self.viwe addSubView:mySwitch];

文字変更する場合は下記
-(void)mySwitchDidTap:(UIButton *)sender
{
sender.selected = !sender.selected;
if (sender.selected) {
// ON に変わった場合の処理
} else {
// OFF に変わった場合の処理
}
}

参考サイト
http://iphone-tora.sakura.ne.jp/uiswitch.html
http://qiita.com/items/215adc6afc1c504f9ed3


Permalink | Comments (0)