iOS 고성능 간단 하고 사용 하기 쉬 운 별 평가 컨트롤 실현

머리말
오래된 운전 기사 인 당신들 은 이런 요 구 를 만난 적 이 있 습 니까?각 상품 이나 업 체 의 아 이 템 은 별 등급 이나 다른 평 점 이 있 습 니 다.대략 아래 의 효과 도 와 같 습 니 다.

구현 방안:
  • 대신 스스로 통용 공간 을 쓴다(시간 이 충분 한 상황 에서)
  • 인터넷 에서 비교적 좋 은 제3 자 를 찾 아 라(시간 이 비교적 촉박 한 상황 에서)4.567917.더 직접적인 것 은 자신 이 ImageView 나 Layer 를 직접 몇 개 넣 는 것 이다.
    사고:기능 은 실현 되 었 지만 성능 은 약간 영향 을 받 는 것 같 습 니 다.구체 적 인 원인 은 제3자 프레임 의 실현 원 리 를 봐 야 한다.물론 잘 하 는 것 도 있다.저 는 개성 적 으로 통제 할 수 있 습 니 다.제 가 이 수 요 를 얻 었 을 때 제3자 도 사용 하려 고 했 지만 결과 가 만 족 스 럽 지 못 했 습 니 다.결국 XWStarView 가 생 겼 습 니 다.
    XWStarView(고성능 별 컨트롤)
    추천 이유:
    간단 하 다
    고성능
    사용자 정의 별 스타일 지원,간격한계 성:
    4.567917.현재 반 성 만 지원 하고 1 성 평 점 은 4.567918.
    현재 사진 만 지원 합 니 다.
    YYLabel 의존XWStarMaker(외관 설정)
    개발 자 는 간격,최대 값,기본 그림 을 설정 하고 그림 을 선택 할 수 있 습 니 다.
    
    @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 는 YY Label 을 직접 물 려 받 았 습 니 다.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 는 YY Label 의 애호가 들 에 게 좋 은 선택 입 니 다.업무 수 요 를 만족 시 키 면 성능 에 만족 할 것 입 니 다.믿 지 못 하 겠 으 면 해 보 세 요(하하,장 난 스 럽 습 니 다).물론 무 와 채 소 는 각자 좋아 하 는 것 이 있 으 니 뿌리 지 마라.
    총결산
    프로그래머 의 즐거움 은 매일 끊임없이 공부 하고 새로운 것 을 발견 하 며 버 려 지지 않도록 하 는 것 이 어야 한다.적어도 나 는 그렇게 생각한다(히히).너 는?
    자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기