2017-04-05 13 views
0

처음으로 여기에 게시하십시오. 나는 어도비에서 스파크 포스트 응용 프로그램에 등장이 슈퍼 매끄러운 텍스트 컨테이너를 재현하는 방법을 연구하고 있습니다.라인 당 최대 글꼴 크기 및 매끄러운 애니메이션을 지원하는 다중 맞춤형 너비 UILabel

IMAGE : https://i.stack.imgur.com/6auPa.png

VIDEO : 나는 이미 더 잘 맞는에 도달 할 때까지 다른 크기에 반복하여 컨테이너의 최대 글꼴 크기를 계산하는 방법으로 다른 답변 다이빙으로 보았다 https://www.youtube.com/watch?v=SfvkreOo3V0&feature=youtu.be

.

그러나주의 깊게 보면이 다릅니다,

  • 텍스트는
  • 단어가 든 용기처럼 행동 단어로 토큰 화되고 UIViews 아마?
  • 단어는 새로운 위치로 정상적으로 움직입니다.
  • 최대 글꼴 크기는 실시간으로 계산됩니다!
  • 그것은 항상 주어진 컨테이너 크기 이것에 대해 일부 전문가의 의견을 듣고 싶어요

을 보존 자 모든 라인이 최대 글꼴 크기

  • 로 확장 특별한 모드를 활성화.

  • 답변

    0

    난 당신이 단어에 텍스트를 브레이크

  • 다음 단계

      하여 해결할 수 있다고 생각합니다.
    1. 각 너비 및 높이를 기준으로 각 단어의 글꼴 크기를 찾고 문자 수를 찾습니다.

    2. 계산 높이에 따라 각 단어의 레이블을 만듭니다.

    언제든지 이렇게하면 사각형 폭의 높이가 변경됩니다. 애니메이션처럼 보일 것입니다.

  • +0

    고마워요. @JasmeetKaur는 초기 당김을 강화하여 단어 당 하나씩 많은 개별 UILabels로 분리 된 것으로 보입니다. "평범한"행동의 종류, 특히 모든 라인이 최대 크기로 확장 될 때 반응하는 방식은 사소한 것처럼 보입니다. 이 모든 것을 실시간 속도 조작으로 결합하면이 모든 것을 너무 빨리 정렬하는 매우 중요한 알고리즘을 가리키는 것 같습니다. 자동 레이아웃 또는 이와 유사한 것을 사용한다고 생각합니까? –

    +0

    @TonyStark, 단어 당 하나씩 UILabel을 동적으로 작성해야하므로 AutoLayout이 필요하지 않다고 생각합니다. 매번 RectView 크기 조정 동일한 알고리즘을 시작해야합니다. –

    +0

    @TonyStark, 또한 예제 비디오에서 텍스트를 변경하는 옵션이 많다는 것을 보았습니다. 마지막에는 각 단어에 대한 레이블이있는 것 같습니다. 그러나 다른 정렬 옵션은 단일 레이블로 수행 할 수 있습니다. –

    0

    도와 주셔서 감사합니다. 솔루션의 사소한 부분 상술 한 바와 같이

    세그먼트에 단어의 텍스트이며, 그것이 당신이 사용을 위해, 상자에 넣어 :

    - (CGSize) sizeForText : (있는 NSString *) 텍스트를 withHyperLabel (TTHyperLabel *)는 {HyperlabelTM의

    CGSize maxSize=CGSizeMake(MAXFLOAT, MAXFLOAT); 
    
    NSDictionary *[email protected]{ 
              NSFontAttributeName: [UIFont fontWithName:hyperLabel.fontName size:100], 
    
              }; 
    
    
    CGRect textRect = [text boundingRectWithSize:maxSize 
                options:0 
                attributes:attributes 
                context:nil]; 
    
    return textRect.size; } 
    

    까다로운 부분은 "정렬"algorihtm이다. 내 자신의 "유동 텍스트 컨테이너"알고리즘을 작성하고 스파크의 버전 에 가깝게 작동하는 것 같습니다. https://www.youtube.com/watch?v=yM13PSLW6Fg&feature=youtu.be

    요지는 내부 상자를 액체가 용기에 부어 넣는 것으로 간주해야합니다. 관심이 있다면 나중에 소스를 열어 볼 수 있습니다. 알려줘!

    감사합니다!