다른이름으로 저장 > html로 저장
웹페이지에서 열면, 오른클릭으로 이미지를 저장할 수 있다.
다른이름으로 저장 > html로 저장
웹페이지에서 열면, 오른클릭으로 이미지를 저장할 수 있다.
***set NSString with TextField's text
NSString *name = [[NSString alloc] initWithString:textField.text];
***edit NSString
NSString msg = [NSString stringWithFormat:@"%@", name];
***connect NSStirngs
NSString *str1 = @"aaaa";
NSString *str2 = @"bbbb";
NSString *str3 = [NSString stringWithFormat:@"%@%@",str1,str2];
***indexOf
#define contains(str1, str2) ([str1 rangeOfString: str2 ].location != NSNotFound)
if(contains(self.display.text, @".")){
return;
}
***trim
[self.tagTF.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]
***Casting
NSString → int
int num = [@"123" intValue];
int → NSString
NSString *str = [NSString stringWithFormat:@"%d", 123];
double → NSString
NSString *str = [NSString stringWithFormat:@"%f", 42.195];
toString
NSString *str = (NSString*)object;
1byte와 2byte문자가 섞인 문자열의 길이 알아내기
NSString *string = @"あいa";
int length = [string length];
int count = 0;
for (int i=0; i<length; i++) {
NSString *str = [string substringWithRange:NSMakeRange(i, 1)];
count+= [str lengthOfBytesUsingEncoding:[str smallestEncoding]];
}
ref : http://starpl.com/jidolstar/10659760
//UITextFieldDelegate 선언후...
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(textField.text.length + string.length - range.length > 15){
return NO;
}
return YES;
}
아이폰5의 길쭉한 화면과 예전의 화면을 볼수 있는 토글 버튼(스토리보드 하단에 위치)이 스토리 보드에 있는데,
하나 맞추고 다시 다른 것을 맞추면 먼저 맞춰져있던것이 다 헝클어지는 것이었다.
그럴 땐, size inspector(오른쪽 메뉴 끝에서 두번째) 잘 맞추면 된다.
Document 디렉토리 비우기 (서브디렉토리 & 파일 지우기)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSArray *fileList = [filemgr subpathsAtPath:[paths objectAtIndex:0]];
for(int i=0; i < fileList.count; i++){
NSString *subPath = [fileList objectAtIndex:i];
NSLog(@"%d : %@", i, subPath);
NSString *currentPath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0], subPath];
[filemgr removeItemAtPath:currentPath error:NULL];
}
파일 생성일
NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
NSDate *result = [fileAttribs fileCreationDate]; //or fileModificationDate
http://stackoverflow.com/questions/3642013/objective-c-get-file-creation-date
//동작확인
// xcode 4.6
// ipod touch 5th
.h
//delegate
@interface ViewController : UIViewController <UITextFieldDelegate>
.m
- (void)viewDidLoad
{
[super viewDidLoad];
tf.delegate = self;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
if(textField == tf){
[textField resignFirstResponder];
}
return YES;
}
EXC_BAD_ACCESS → ZombieObject 설정
EditSchme > 해당스킴 > Diagnostics > Memory Management
Enable Zombie Objects
.h
<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
////////////
.m
- (IBAction)tapBtn:(id)sender {
UIImagePickerController *pickerLibrary = [[UIImagePickerController alloc] init];
pickerLibrary.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[pickerLibrary setAllowsEditing:YES];
pickerLibrary.delegate = self;
//[self presentModalViewController:pickerLibrary animated:YES];
//deprecated in iOS6
[self presentViewController:pickerLibrary animated:YES completion:nil];
}
- (void) imagePickerController:(UIImagePickerController * )picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
targetImage = image;
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[self dismissViewControllerAnimated:YES completion:nil];
}
UITapGestureRecognizer *pressGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(doSomethingMethod)];
[targetView addGestureRecognizer:pressGesture];
GPUImage framework
https://github.com/BradLarson/GPUImage
< framework import >
GPUImage framework를 다운로드 받아서, 임포트할 프로젝트에 둔다.
xcode에서 프로젝트 Frameworks에 GPUImage.xcodeproj를 드래그
GPUImage를 빌드 -> product에 libGPUImage.a 생성
BuildPhase > Target Dependencies 에 libGPUImage를 추가
BuildPhase > Link Binary Libraries 에 다음의 프레임워크추가
CoreMedia, CoreVideo, OpenGLES, AVFoundation, QuatzCore
libGPUImage도 라이브러리에 추가
BuildSetting > Search paths > header search pathes
GPUImage framework의 루트를 지정(xcodeproj가 있는 폴더)
recursive로 지정
Header Search pathes에 지정하면 Debug와 Release에 같은 값이 지정된다.
예 > GPUImage/framework
코딩할 문서에서
#import "GPUImage.h" <- 자동완성이 안되면 header search path지정이 잘못된 것
코딩... 코딩... 코딩...
Introducing the GPUImage framework
http://sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework
간단한 예제 : 감마필터 적용시키기
CGRect mainScreenFrame = [[UIScreen mainScreen] applicationFrame];
GPUImageView *primaryView = [[GPUImageView alloc] initWithFrame:mainScreenFrame];
self.view = primaryView;
UIImage *inputImage = [UIImage imageNamed:@"x.png"];
GPUImagePicture *picture = [[GPUImagePicture alloc] initWithImage:inputImage];
GPUImageGammaFilter *g = [[GPUImageGammaFilter alloc] init];
[g setGamma:0.2];
[picture addTarget:g];
[g addTarget:primaryView];
[picture processImage];
커스텀 스플레시화면을 위해 뷰를 현재 화면에 덮어서 표시하고 싶었는데,
원래 소스가 self.view에 이상한 짓을 많이 해서 addSubView해서 bringSubviewToFront해도 표시가 안되서
AppDelegate의 window를 잡아와서 얹어버렸다.
UIView *target = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIView *vv = [[UIView alloc] initWithFrame:CGRectMake(0, 0, target.bounds.size.width, target.bounds.size.height)];
vv.backgroundColor = [UIColor redColor];
[target addSubview:vv];
애니메이션의 원의 경로로 움직이고 싶을때 등.
radius : 원의 반지름
degree : 각도
x = 원의 중심이 될 x좌표 + cos(각도) * 반지름
y = 원의 중심이 될 y좌표 + sin(각도) * 반지름
ex >
float x = self.view.center.x + cos(degree) * radius;
float y = self.view.center.y + sin(degree) * radius;
일괄 변경
ls | sed "s/\(.*\)변경전파일명의문자열\(.*\)/mv '&' '\1변경후파일명의문자열\2' /" |sh
ex ) png파일의 끝에 _thumb를 붙임
a.png → a_thumb.png
ls | sed "s/\(.*\).png\(.*\)/mv '&' '\1_thumb.png\2' /" |sh
일괄변경 & 일괄복사
*.png -> *_thumb.png 같은 디렉토리에 일괄복사
find ./ -name "*.png" | sed -e 'p' -e 's/.png/_thumb.png/g' | xargs -n 2 cp
*.png -> *_thumb.png 로 이름 바꿈
find ./ -name "*.png" | sed -e 'p' -e 's/.png/_thumb.png/g' | xargs -n 2 mv
iOS6
//UINavigationController에서
- (BOOL)shouldAutorotate {
return NO;
}
http://stackoverflow.com/questions/12777474/ios-6-app-is-rotating-even-with-shouldautorotateno
NSInteger rand = arc4random() % 10 +1;
// 1〜10
ImageView in FrameLayout
ImageView iv = new ImageView(MainActivity.this);
iv.setImageDrawable(MainActivity.this.getResources().getDrawable(drawable.arrow));
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.width = 100;
lp.height = 30;
iv.setLayoutParams(lp);
float frame_center_x = frame.getWidth() /2;
float frame_center_y = frame.getHeight() /2;
iv.setX(frame_center_x - iv.getLayoutParams().width/2);
iv.setY(frame_center_y - iv.getLayoutParams().height/2);
frame.addView(iv);
OSX Lion을 쓰다가 윈도우를 쓰면 작업공간이 부족해서 답답하다.
그럴때 작업에 따라 화면분할을 하고 싶을 때. 유용한 유틸.
디바이스 종류구분을 height로 할 때,
[UIScreen mainScreen].bounds.size.height == 568
잘되던 코드가 splash image를 삭제하자 동작하지 않게 되었다.
height가 ipod touch 5세대에서 480이 나오는 것.
splash image를 원래대로 돌리자 정상.
어쩔수 없이 크기가 같은 검은 덤프이미지를 넣어서 해결.
Gyroscope
#import <CoreMotion/CoreMotion.h>
self.motionManager = [[CMMotionManager alloc] init];
//Gyroscope
if([self.motionManager isGyroAvailable])
{
/* Start the gyroscope if it is not active already */
if([self.motionManager isGyroActive] == NO)
{
/* Update us 2 times a second */
[self.motionManager setGyroUpdateInterval:1.0f / 2.0f];
/* And on a handler block object */
/* Receive the gyroscope data on this block */
[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue]
withHandler:^(CMGyroData *gyroData, NSError *error)
{
NSString *x = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.x];
self.gyro_xaxis.text = x;
NSString *y = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.y];
self.gyro_yaxis.text = y;
NSString *z = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.z];
self.gyro_zaxis.text = z;
}];
}
}
else
{
NSLog(@"Gyroscope not Available!");
}
}
http://stackoverflow.com/questions/7135934/ios-gyroscope-api
*** 특정 사이트 검색
site:
keyword site:yahoo.com <- 사이트 지정 검색
keyword -site:yahoo.com <- 지정 사이트 제외 검색
*** filetype 지정 검색
filetype:pdf <- pdf 파일 검색
*** 메일 고급검색
http://support.google.com/mail/bin/answer.py?hl=ko&answer=7190
UITapGestureRecognizer
탭(몇번이든)
UIPinchGestureRecognizer
(두손가락으로 집어 벌리기 오므리기)
UIPanGestureRecognizer
Panning or dragging
UISwipeGestureRecognizer
넘기기 (어떤 방향이든)
UIRotationGestureRecognizer
Rotating (fingers moving in opposite directions)
UILongPressGestureRecognizer
길게누르기