IT/iOS
컨트롤보다 큰 이미지가 있을때 컨트롤싸이즈에 맞게 조절하기
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];