iOS에서 고성능 평가 제어 구현

php中世界最好的语言
풀어 주다: 2018-03-26 14:05:11
원래의
1964명이 탐색했습니다.

이번에는 iOS의 고성능 채점 컨트롤을 소개해 드리겠습니다. iOS에서 고성능 채점 컨트롤을 구현하기 위한 주의사항은 무엇인가요? 다음은 실제 사례를 살펴보겠습니다.

머리말

경력이 풍부한 운전자로서 이런 요구를 들어보신 적이 있으신가요? 각 제품이나 판매자 항목에는 별점 또는 기타 등급이 있으며 이는 대략 다음 렌더링과 같습니다.

구현 계획:

  • 마스터가 직접 일반 공간을 작성합니다(시간이 충분할 경우)

  • 온라인에서 더 나은 제3자를 찾으세요(시간이 촉박할 때)

  • 더 직접적으로, 몇 가지 ImageView 또는 레이어를 직접 넣으세요

생각: 기능은 구현되었지만 성능에는 약간 영향을 미치는 것 같습니다. 구체적인 이유는 타사 프레임워크의 구현 원칙에 따라 다릅니다. 물론 매우 잘 작동하는 경우도 있습니다. 저는 성능 관리 담당자입니다. 이 요구 사항을 받았을 때 일부 제3자를 활용하려고 시도했지만 결과가 만족스럽지 않았습니다. 드디어 XWStarView가 탄생했습니다.

XWStarView(고성능 별 제어)

추천 이유:

  • 간단하고 사용하기 쉽습니다

  • 고성능, yyLabel 비동기 드로잉 사용

  • 사용자 정의 별 스타일 지원, 간격

  • ㅋㅋㅋ 구성)

개발자가 구성할 수 있습니다. 간격, 최대값, 기본 그림, 선택한 그림
    @interface XWStarMaker : NSObject
    @property (nonatomic, assign) CGFloat space;
    @property (nonatomic, strong) NSString *defaultImage;
    @property (nonatomic, strong) NSString *selectImage;
    @property (nonatomic,assign) NSInteger maxValue;
    @end
    로그인 후 복사
  • XWStarView.m(핵심 코드)

  • 눈썰미가 있는 학생들은 이미 XWStarView가 YYLabel을 직접 상속한다는 것을 보았습니다. YYLaebl에 익숙한 개발자라면 제가 무엇을 할지 알 것입니다. 할.

    #import "YYLabel.h"
    #import "XWStarMaker.h"
    @class XWStarView;
    @protocol XWStarViewDelegate <NSObject>
    @optional
    -(void)xw_starView:(XWStarView*)tagView star:(NSInteger)star;
    @end
    @interface XWStarView : YYLabel
    @property (nonatomic, assign) NSInteger score;
    @property (nonatomic,weak) id<XWStarViewDelegate> delegate;
    -(instancetype)initWithFrame:(CGRect)frame maker:(void (^)(XWStarMaker *))makeBlock;
    @end
    로그인 후 복사
    구체적인 구현 세부정보는 .m 파일을 참조하세요.
  • @interface XWStarView ()
    @property (nonatomic,strong) XWStarMaker *maker;
    @end
    @implementation XWStarView
    -(instancetype)initWithFrame:(CGRect)frame maker:(void (^)(XWStarMaker *))makeBlock{
     if (self = [super initWithFrame:frame]) {
       self.maker = [[XWStarMaker alloc] init];
      if (makeBlock) {
       makeBlock(self.maker);
      }
      self.displaysAsynchronously = YES;
      self.fadeOnAsynchronouslyDisplay = NO;
      [self creatScoreAttr];
     }
     return self;
    }
    #pragma mark - private
    -(void)creatScoreAttr{
     NSMutableAttributedString *text = [NSMutableAttributedString new];
     UIFont *font = [UIFont systemFontOfSize:0];
     for (int i = 0; i < self.maker.maxValue; i++) {
      UIImage *image = [UIImage imageNamed:self.maker.defaultImage];
      NSMutableAttributedString *attachText = [NSMutableAttributedString yy_attachmentStringWithContent:image contentMode:UIViewContentModeLeft attachmentSize:CGSizeMake(image.size.width + self.maker.space, image.size.height) alignToFont:font alignment:YYTextVerticalAlignmentCenter];
    //添加点击事件
      weak typeof(&*self) weakSelf = self;
      [attachText yy_setTextHighlightRange:NSMakeRange(0, 1) color:nil backgroundColor:nil tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect){
       if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(xw_starView:star:)]) {
        [weakSelf.delegate xw_starView:weakSelf star:i];
       } 
      }];
      [text appendAttributedString:attachText];
     }
     self.attributedText = text;
    }
    -(void)setScore:(NSInteger)score{
     if (_score == score)
     {
      return;
     }
     _score = score;
     //获取图片资源
     NSArray *attachments = self.textLayout.attachments;
     for (int i = 0; i < attachments.count; i++) {
      YYTextAttachment *attachment = attachments[i];
      attachment.content = [UIImage imageNamed:i <= _score ? self.maker.selectImage : self.maker.defaultImage];
     }
    }
    @end
    로그인 후 복사
  • 당신이 iOS 프로그래머라면 아마도 코드를 이해할 수 있을 것입니다. 구현은 간단하지만 그 효과는 매우 뛰어납니다. 특히 복잡한 목록을 사용할 때 더욱 그렇습니다.

  • XWStarView 사용

     _scoreView = [[XWStarView alloc] initWithFrame:CGRectMake(0, self.frame.size.height - 40, self.frame.size.width, 40) maker:^(XWStarMaker *maker){
       maker.defaultImage = @"goods_score_empt.png";
       maker.selectImage = @"goods_score_full.png";
       maker.space = 10;
      }];
      _scoreView.delegate = self;
    로그인 후 복사
    XWStarView는 YYLabel 애호가에게 좋은 선택입니다. 귀하의 비즈니스 요구 사항을 충족한다면 성능에 매우 만족하실 것입니다. ). 물론 무와 나물에 대한 선호도는 사람마다 다르므로 마음에 들지 않는다고 비난하지 마세요.

    이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

    추천 도서:

    H5의 저장 방법에 대한 자세한 설명

    H5에서 제약 조건 확인 API를 사용하는 방법

    위 내용은 iOS에서 고성능 평가 제어 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 이슈
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿