>  기사  >  백엔드 개발  >  iOS 개발 질문 (4)

iOS 개발 질문 (4)

黄舟
黄舟원래의
2017-01-20 09:29:321074검색

32.UIImage+Scale Zoom 이미지
UIImage는 이미지를 로드할 수 있지만 UIImage를 사용하여 축소하거나 확대한 이미지를 얻으려고 합니다. 다음으로 UIImage 그림 확대 및 축소를 구현하기 위해 UIImage 분류를 추가합니다. 밖으로.
먼저 UIImage+Scale 클래스를 만듭니다.
그런 다음 이 클래스의 메서드를 구현합니다.

#import <UIKit/UIKit.h>
@interface UIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size;
@end
#import "UIImage+Scale.h"
@implementation UIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size
{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(size);
// 绘制改变大小的图片
[self drawInRect:CGRectMake(0, 0, size.width,size.height)];
// 从当前context中创建一个改变大小后的图片
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
// 返回新的改变大小后的图片
return scaledImage;
}
@end

마지막으로 이 클래스를 사용합니다.

#import "UIImage+Scale.h"
[[UIImage imageNamed:”p.png”] scaleToSize:CGSizeMake(252.0f,192.0f)];

33. Coreplot: 분산형 차트에서 , legendTitleForBarPlot은 호출되지 않습니다.
legendTitleForBarPlot은 히스토그램의 데이터 소스 메서드입니다. 분산형 차트의 데이터 소스 대리자 CPTScatterPlotDataSource에는 이러한 메서드가 없습니다. 범례 제목을 사용자 정의하는 유일한 방법은 플롯의 제목 속성을 지정하는 것입니다. 제목이 비어 있으면 식별자 속성이 사용됩니다.

34. setHidesBackButton은 뒤로 버튼을 숨길 수 없습니다.
setHidesBackButton:animated:를 viewWillAppear: 또는 viewDidLoad 메서드 대신 viewDidAppear: 메서드로 이동하세요.

35. NSURLConnectionDelegate 프로토콜 선언을 찾을 수 없습니다
iOS5부터 NSURLConnectionDelegate는 더 이상 사용되지 않습니다. NSURLConnection.h에서는 이러한 메서드가 비공식 프로토콜이 되었습니다. 동시에 이러한 메서드의 복사본이 공식 프로토콜 NSURLConnectionDataDelegate에 복사됩니다. 클래스 인터페이스에 선언된 6c7586e62da791676357131c39ce00fc를 직접 삭제하고 이러한 메소드를 구현하여 비공식 프로토콜을 사용할 수 있습니다.
36. 경고 "속성의 합성 getter는 '소유' 객체를 반환하기 위해 Cocoa 명명 규칙을 따릅니다."
합성할 속성에서 속성 이름은 "newFeature"와 같이 "new"로 시작해서는 안 됩니다.
37. C99에서는 'xxx' 함수의 암시적 선언이 유효하지 않습니다.
이것은 Xcode의 버그입니다. 이 오류는 컴파일러가 처음으로 함수 정의를 확인했지만 함수 프로토타입을 찾지 못한 경우 보고됩니다. 해결책은 함수 정의 앞에 함수 프로토타입 선언을 추가하는 것입니다. 함수 프로토타입 선언문은 클래스의 인터페이스 선언(.h 헤더 파일)에 삽입되거나 클래스 구현문(.m 파일) 앞에 삽입됩니다.
38. -[UIImageressibleImageWithCapInsets:]: 인식할 수 없는 선택기
이 방법은 iOS5의 새로운 기능입니다. iOS4에서는 StretchableImageWithLeftCapWidth:topCapHeight: 방법을 사용하세요. 코드:

if([img respondsToSelector:@selector(resizableImageWithCapInsets:)])
{//for iOS 5+
img=[srcImg resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)]; 
}else{//iOS 4 compatibility
img=[srcImg stretchableImageWithLeftCapWidth:6 topCapHeight:0];
}

39. 지정된 글꼴의 문자열 크기를 계산합니다

CGSizemaximumLabelSize = CGSizeMake(250 ,MAXFLOAT);
CGSizeexpectedLabelSize = [LABEL.text sizeWithFont:[UIFontsystemFontOfSize:UILabel.font]
constrainedToSize:maximumLabelSize
lineBreakMode:UILineBreakModeWordWrap];

expectedLabelSize는 글꼴, 최대 크기 제한 및 줄 바꿈 모드를 기반으로 계산된 실제 크기입니다. .
40. ASIHTTPRequestclearDelegateAndCancel 메소드로 인해 프로그램이 충돌합니다.
ASIHTTPRequest는 요청을 취소하거나 델리게이트를 해제할 때 해제된 델리게이트 메소드 호출을 방지하기 위해 요청을 취소해야 합니다. . 그러나clearDelegateAndCancel 메소드는 호출 취소 객체 오류 및 충돌을 발생시킵니다.
이를 방지하려면 다음을 수행해야 합니다(버전 1.8.1 이하).
대리자에서 ASIHTTPRequest 객체를 유지하세요.
대리자를 해제하거나 요청을 취소할 때,clearDelegateAndCancel을 호출하지 말고 " [ 요청 릴리스],요청=nil;".
41. 'CAMediaTimingFunction *'에 대한 Castof는 ARC에서 허용되지 않습니다.
다음 코드는 위의 오류를 발생시킵니다.

transition.timingFunction= UIViewAnimationCurveEaseInOut;

사실 MRC(수동 메모리 관리)에서도 마찬가지입니다. , 이 코드도 올바르지 않습니다. 에러가 나지 않는 이유는 UIViewAnimationCurveEaseInOut이 보통 0이고, 변환하면 nil이 되기 때문입니다. 실제로 이 코드는 다음과 같이 수정되어야 합니다:

[animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];


위는 iOS 개발 질문(4)의 내용입니다. 더 많은 관련 내용을 보려면 PHP를 주목하세요. 중국사이트(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:iOS 개발 질문 (3)다음 기사:iOS 개발 질문 (3)