문제

나는 엄청난 양의 코드를 가지고 있습니다. sizeWithFont sizeWithFont가 더 이상 사용되지 않으므로 필사적으로 제거해야 하는 호출입니다.이제 사용법을 좀 알아냈습니다. boundingRectWithSize 그러나 그 대신 백만 번의 호출을 다시 수행하는 대신 sizeWithFonts를 수행하는 래퍼 함수를 ​​만드는 것을 생각했습니다.

그래서 제가 생각해낸 방법은 다음과 같습니다.

- (CGSize) getSizeForCurrentFont:(UIFont*)font
                    forWidth:(CGFloat)width
           constrainedToSize:(CGSize)size
               lineBreakMode:(NSLineBreakMode)lineBreakMode
                 minFontSize:(CGFloat)minFontSize
              actualFontSize:(CGFloat *)actualFontSize
{
    // functionality
}

내가 원하는 것은 설정된 값만 호출되고 나머지는 기본값이 무엇이든 간에 호출된다는 것입니다.따라서 호출에 글꼴과 너비만 있는 경우 해당 항목만 설정됩니다.FontSize가 더 이상 지원되지 않는다는 점을 이해하지만 이에 대한 제안을 보내주시면 감사하겠습니다.

내 질문은 다음과 같습니다이상한 결과가 나오지 않도록 글꼴, 너비, 크기, lineBreakMode, minFontSize 및 ActualFontSize를 설정해야 하는 기본값은 무엇입니까?본질적으로 나는 다음에 대해 동일한 결과를 원합니다.

[s sizeWithFont:font
constrainedToSize:size];

와 같은 :

[s getSizeForCurrentFont:font 
forWidth:width #This is some Default Value# 
constrainedToSize:size 
lineBreakMode:lineBreakMode #This is some Default Value# 
minFontSize:minFontSize #This is some Default Value# 
actualFontSize: actualFontSize #This is some Default Value#]

추가 설명이 필요한지 알려주십시오.boundingRectWithSize를 수행하는 좋은 방법을 제안할 수 있다면 그것도 좋을 것입니다.

도움이 되었습니까?

해결책

프리미티브를 객체로 감쌀 수 있나요?그래서 당신은 가질 것입니다 :

- (CGSize) getSizeForCurrentFont:(UIFont*)font
                    forWidth:(NSNumber*)width
           constrainedToSize:(NSValue*)size
               lineBreakMode:(NSNumber*)lineBreakMode
                 minFontSize:(NSNumber*)minFontSize
              actualFontSize:(NSNumber*)actualFontSize
{
    // functionality
}

모든 '기본값' 값은 nil로 설정됩니다.을 위한 CGFloat, 다음을 사용하여 생성합니다.

CGFloat value = 10.0f;
NSNumber* valueObj = @(value);

을 위한 NSValue, 당신이 사용할 수있는:

CGSize size = CGSizeMake(10.0f, 10.0f);
NSValue* sizeObj = [NSValue valueWithCGSize:size];

여기서 중요한 문제는 유효한 값과 부재 식별자를 구별하는 방법입니다.일반적으로 정의된 상수(예: NSNotFound), 그러나 귀하가 나열한 유형에는 그러한 것이 존재하지 않습니다.객체가 없다는 것은 본질적으로 가치가 없다는 것을 의미하기 때문에 객체가 도움이 될 수 있습니다.

다른 팁

메소드를 생성할 수 있습니다:

- (CGSize) sizeWithFont:(UIFont*)font constrainedToSize:(CGSize)size {
    [self getSizeForCurrentFont:font 
        forWidth:#some Default Value# 
        constrainedToSize:size 
        lineBreakMode:#some Default Value# 
        minFontSize:#some Default Value# 
        actualFontSize:#some Default Value#]
}

이는 "기본값"을 생성하는 가장 간단한 방법입니다.

스위프트 4.2 업데이트

 let size = CGSize(width: 0, height: 0)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top