https://github.com/YouXianMing

山寨凤凰新闻菜单效果

 山寨凤凰新闻菜单效果

 

效果图:

 

山寨来源:

LiveScaleLabel.h 与 LiveScaleLabel.m
//
//  LiveScaleLabel.h
//  ShowLabel
//
//  Created by XianMingYou on 15/1/26.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface LiveScaleLabel : UIView

@property (nonatomic) CGFloat beginScaleValue;
@property (nonatomic) CGFloat endScaleValue;

@property (nonatomic, strong) UIColor  *normalStateColor;
@property (nonatomic, strong) UIColor  *maxStateColor;

@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) UIFont   *font;

@property (nonatomic) CGFloat sensitiveValue; // 敏感的值
@property (nonatomic) CGFloat currentValue;   // 当前值

- (void)buildView;
- (void)accessCurrentValue:(CGFloat)currentValue;

@end
//
//  LiveScaleLabel.m
//  ShowLabel
//
//  Created by XianMingYou on 15/1/26.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "LiveScaleLabel.h"

@interface LiveScaleLabel ()

@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UIView  *snapView;
@property (nonatomic, strong) UILabel *maxLabel;

@end

@implementation LiveScaleLabel

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self setUpLabelWithFrame:self.bounds];
    }
    
    return self;
}

- (void)setUpLabelWithFrame:(CGRect)frame {
    self.label                  = [[UILabel alloc] initWithFrame:frame];
    self.label.textAlignment    = NSTextAlignmentCenter;
    
    self.maxLabel               = [[UILabel alloc] initWithFrame:frame];
    self.maxLabel.textAlignment = NSTextAlignmentCenter;
}

- (void)buildView {
    UIColor *normalStateColor = (self.normalStateColor == nil ? [UIColor blackColor] : self.normalStateColor);
    UIColor *maxStateColor    = (self.maxStateColor == nil ? [UIColor redColor] : self.maxStateColor);
    UIFont  *font             = (self.font == nil ? [UIFont systemFontOfSize:16.f] : self.font);
    NSString *text            = (self.text == nil ? @"" : self.text);
    
    // 设置基本样式
    self.label.text      = text;
    self.label.textColor = normalStateColor;
    self.label.font      = font;
    
    self.maxLabel.text      = text;
    self.maxLabel.textColor = maxStateColor;
    self.maxLabel.font      = font;
    
    // 截图
    [self addSubview:self.label];
    [self addSubview:self.maxLabel];
    
    // 设定起始状态值
    [self accessCurrentValue:self.currentValue];
}

- (void)accessCurrentValue:(CGFloat)currentValue {
    CGFloat beginScaleValue = (self.beginScaleValue <= 0 ? 1.f : self.beginScaleValue);
    CGFloat endScaleValue   = (self.endScaleValue   <= 0 ? 1.f : self.endScaleValue);
    CGFloat sensitiveValue  = (self.sensitiveValue  <= 0 ? 320 : self.sensitiveValue);
    
    CGFloat percent = currentValue / sensitiveValue;
    if (percent >= 1) {
        percent = 1;
    } else if (percent <= 0) {
        percent = 0;
    }
    
    self.transform      = CGAffineTransformMake(beginScaleValue + percent * endScaleValue, 0, 0,
                                                beginScaleValue + percent * endScaleValue, 0, 0);
    self.maxLabel.alpha = percent;
    self.label.alpha    = 1 - percent;
}

@end
//
//  ViewController.m
//  ShowLabel
//
//  Created by XianMingYou on 15/1/26.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "ViewController.h"
#import "LiveScaleLabel.h"

@interface ViewController ()<UIScrollViewDelegate>

@property (nonatomic, strong) UIScrollView   *scrollView;
@property (nonatomic, strong) LiveScaleLabel *liveLabelLeft;
@property (nonatomic, strong) LiveScaleLabel *liveLabelRight;
@property (nonatomic, strong) UIView         *lineView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    
    // 左侧view
    self.liveLabelLeft                  = [[LiveScaleLabel alloc] initWithFrame:CGRectMake(0, 300, 160, 30)];
    self.liveLabelLeft.normalStateColor = [UIColor grayColor];
    self.liveLabelLeft.text             = @"YouXianMing";
    self.liveLabelLeft.endScaleValue    = 0.2;
    self.liveLabelLeft.sensitiveValue   = 320;
    [self.liveLabelLeft buildView];
    [self.liveLabelLeft accessCurrentValue:320];
    [self.view addSubview:self.liveLabelLeft];
    
    // 右侧view
    self.liveLabelRight                  = [[LiveScaleLabel alloc] initWithFrame:CGRectMake(160, 300, 160, 30)];
    self.liveLabelRight.text             = @"NoZuoNoDie";
    self.liveLabelRight.normalStateColor = [UIColor grayColor];
    self.liveLabelRight.maxStateColor    = [UIColor cyanColor];
    self.liveLabelRight.endScaleValue    = 0.2;
    self.liveLabelRight.sensitiveValue   = 320;
    [self.liveLabelRight buildView];
    [self.view addSubview:self.liveLabelRight];

    
    self.scrollView                                = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    self.scrollView.delegate                       = self;
    self.scrollView.pagingEnabled                  = YES;
    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.contentSize                    = CGSizeMake(self.scrollView.frame.size.width * 2,
                                                                self.scrollView.frame.size.height);
    [self.view addSubview:self.scrollView];
    
    // 线条view
    self.lineView            = [[UIView alloc] initWithFrame:CGRectMake(0, 300 + 30, 160, 1)];
    UIView *backView         = [[UIView alloc] initWithFrame:CGRectMake(20, 0, 120, 1)];
    backView.backgroundColor = [UIColor yellowColor];
    [self.lineView addSubview:backView];
    [self.view addSubview:self.lineView];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat x = scrollView.contentOffset.x;
    [self.liveLabelLeft  accessCurrentValue:320 - x];
    [self.liveLabelRight accessCurrentValue:x];
    
    CGRect rect = self.lineView.frame;
    rect.origin.x      = x / 2.f;
    self.lineView.frame = rect;
}

@end

 

posted @ 2015-01-26 22:01  YouXianMing  阅读(480)  评论(0编辑  收藏  举报