posted by dalnimbest 2013. 8. 4. 14:29

// 'strBodyAll' is a variable that has text you are dealing with ('strBodyAll'에서 여러줄을 한줄로 바꿀려고 한다.)



//  '\r' 은 뉴라인이고, '+'은 그앞의 표현('\r')이 한줄또는 그이상이 나타나는것을 말한다.
NSRegularExpression *regEx= [NSRegularExpression regularExpressionWithPattern:@"\r+" options:NSRegularExpressionCaseInsensitive error:nil];


// Replacing actually happens here with one new line('\r') (실제로 여기서 치환이 일어난다.)
[regEx replaceMatchesInString:strBodyAll options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [strBodyAll length]) withTemplate:@"\r"];


//  =================Bonus==================

// If you want to how many replace will be happen, just use below code (만약 몇개가 치환되는지 알고 싶으면 아래 코드를 사용할것)


// 'numberOfMatches' variables has the number of matched multilple new lines in 'strBodyAll' ('numberOfMatches'변수는 'strBodyAll'에서 나타는 여러줄의 총 수를 말한다.

NSUInteger numberOfMatches = [regEx numberOfMatchesInString:strBodyAll
                                                    options:0
                                                      range:NSMakeRange(0, [strBodyAll length])];


posted by dalnimbest 2013. 5. 12. 21:46

UIImage *minImage = [UIImage imageNamed:@"min.png"];        //1번 좌측 최소값 이미지바
    UIImage *maxImage = [UIImage imageNamed:@"max.png"];        //2번 우측 최대값 이미지바
    UIImage *tumbImage = [UIImage imageNamed:@"Tumb1.png"];        //3번 슬라이더를 조절할 버튼
    
    minImage = [minImage stretchableImageWithLeftCapWidth:10 topCapHeight:0.0];
    maxImage = [maxImage stretchableImageWithLeftCapWidth:10 topCapHeight:0.0];
    
    [slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
    [slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
    [slider setThumbImage:tumbImage forState:UIControlStateNormal];

posted by dalnimbest 2013. 5. 12. 10:45

http://www.idev101.com/code/User_Interface/sizes.html


//가로 세로 모드에서의 싸이즈 변화
http://www.vickiwenderlich.com/2011/07/basic-iphone-ipad-screen-component-pixel-dimensions/

//애플 문서
http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html


//무니만개발자님의 블로그
http://j2enty.com/entry/iOS-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%B9%8C%EB%8D%94-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%9C%A0%EC%9D%98%EC%82%AC%ED%95%AD-%EB%B0%8F-Control-%EC%82%AC%EC%9D%B4%EC%A6%88



posted by dalnimbest 2013. 5. 11. 23:11

같은 형태의 이미지이지만 컨트롤의 넓이에 따라서 이미지를 여러개 만들어야할경우에는 이미지를 한개 만들어두고 늘여서 쓰면 된다. 영어로는 stretchable images라고 한다.

stretchable image를 사용하면 최소크기의 이미지를 한개 만들어서 사용하기 때문에 이미지 때문에 용량이 크지는것을 방지하여 용량측면에서도 이득이 있다.

stretchable image는 3개 부분으로 구분되어 있는데 왼쪽, 가운데, 오른쪽으로 나눌수 있는데, 왼쪽 오른쪽을 각각 left cap, right cap이라고 부른다. 실제로 늘어나는 이미지(stretchable)는 가운데 부분으로 보통 1pixel로 만든다.

<stretchImage.png 이미지>

                                  https://a248.e.akamai.net/camo.github.com/fa6222d5c3156dd454fad97410e5e91b7aba2020/687474703a2f2f69646576726563697065732e66696c65732e776f726470726573732e636f6d2f323031302f31322f627574746f6e2e706e673f773d313126683d3330

이런 형태의 이미지를 한개 만들어 두면 된다.
이경우 이미지의 총 넓이는 11pixel일때, left cap이 5pixel이고 middle은 1pixel, right cap은 left cap과 같아야 한다.(left cap과 right cap이 다를경우는 어떻게 해야할지 모르겠다.)

//소스 코드
UIImage* stretchImg =[[UIImage imageNamed:@"stretchImage.png"] stretchableImageWithLeftCapWidth:5.0 topCapHeight:0.0]
UIImageView* imageView = [[UIImageView alloc] initWithImage:stretchImg]; imageView.frame = CGRectMake(0, 0, 100.0, stretchImg.size.height);


<결과 Image>
https://a248.e.akamai.net/camo.github.com/66842c8beec27aaa76d5cef1b627021db6aec28e/687474703a2f2f69646576726563697065732e66696c65732e776f726470726573732e636f6d2f323031302f31322f7374726574636865645f627574746f6e2e706e673f773d33303026683d3330

 




posted by dalnimbest 2013. 5. 11. 21:08


//버튼 동적으로 생성하기
    UIButton *btnCancel = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnCancel.frame = CGRectMake(110, 55, 90, 37);
    [btnCancel setTitle:[NSString stringWithFormat:@"%@",NSLocalizedString(@"Cancel", @"")]  forState:UIControlStateNormal];
    btnCancel.backgroundColor = [UIColor blueColor];           
    [btnCancel addTarget:self action:@selector(dismissBtnCancel) forControlEvents:UIControlEventTouchUpInside];
    [theView addSubview:btnCancel];

posted by dalnimbest 2013. 5. 11. 12:15

버튼등에 올릴 이미지가 버튼보다 크면 이미지밖에 안보인다. 또한 이미지전체가 메모리에 올라오기 때문에 불필요한 메모리 낭비가 된다.

그래서 버튼의 크기에 맞게 이미지를 resize해서 올린다.

//원본 이미지와 원하는 싸이즈를 받아서 싸이즈만큼의 이미지를 리턴
-
(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {     UIGraphicsBeginImageContext(newSize);
    
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();     UIGraphicsEndImageContext(); return newImage;
}

//사용방법
UISegmentedControl
* segmentButton; segmentButton = [UISegmentedControl segmentedControlWithItems: [NSArray arrayWithObjects: [self imageWithImage:[UIImage imageNamed:@"option_one.png"] scaledToSize:CGSizeMake(32, 32)], [self imageWithImage:[UIImage imageNamed:@"option_two.png"] scaledToSize:CGSizeMake(32, 32)], nil]]; segmentButton.contentMode = UIViewContentModeScaleToFill; segmentButton.frame = CGRectMake(10, 10, 200, 32); [view addSubview:segmentButton];