Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 47f1f0ba8d | |||
| 0be9465049 | |||
| 7bed3dd5d0 | |||
| 4f1f6760d5 | |||
| 8103a1aea4 | |||
| dc6dc647ad | |||
| b6ea1a502a | |||
| afcf328158 | |||
| 49cf12c568 | |||
| 0d4b942b74 | |||
| 30a369796f | |||
| f2f35312e4 | |||
| d32f09a584 | |||
| 80e179df1d | |||
| 48da335f09 | |||
| 70c1fb897c | |||
| 30df02f804 | |||
| 9ba20e9e14 | |||
| d6d1dd8461 | |||
| b0de620503 | |||
| 8e81fb20cd |
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## <a href="https://github.com/Jawbone/JBChartView/tree/v2.6.1">2.6.1</a>
|
||||
#### 07/25/14
|
||||
- Fixes issue <a href="https://github.com/Jawbone/JBChartView/pull/74">#74</a>.
|
||||
|
||||
## <a href="https://github.com/Jawbone/JBChartView/tree/v2.6.0">2.6.0</a>
|
||||
#### 07/24/14
|
||||
- Fixes issue <a href="https://github.com/Jawbone/JBChartView/pull/71">#71</a>.
|
||||
|
||||
## <a href="https://github.com/Jawbone/JBChartView/tree/v2.5.5">2.5.5</a>
|
||||
#### 05/13/14
|
||||
- Fixes issue <a href="https://github.com/Jawbone/JBChartView/pull/57">#57</a>.
|
||||
|
||||
@@ -127,6 +127,18 @@ typedef NS_ENUM(NSInteger, JBLineChartViewLineStyle){
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView colorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the fill color of particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: clear color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The fill color to show under a line in the chart.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView fillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the color of a particular dot in a line at lineIndex within the chart.
|
||||
* For this value to apply, showsDotsForLineAtLineIndex: must return YES for the line at lineIndex.
|
||||
@@ -207,6 +219,19 @@ typedef NS_ENUM(NSInteger, JBLineChartViewLineStyle){
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the selection fill color to be overlayed under a line within the chart during touch events.
|
||||
* The property showsLineSelection must be YES for the color to apply.
|
||||
*
|
||||
* Default: clear color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to highlight under a line during chart selections.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionFillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the selection color to be overlayed on a line within the chart during touch events.
|
||||
* The property showsLineSelection must be YES for the color to apply.
|
||||
|
||||
+114
-3
@@ -46,8 +46,10 @@ static NSArray *kJBLineChartLineViewDefaultDashPattern = nil;
|
||||
|
||||
// Colors (JBLineChartView)
|
||||
static UIColor *kJBLineChartViewDefaultLineColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultDotColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultLineFillColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultLineSelectionColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultLineSelectionFillColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultDotColor = nil;
|
||||
static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
@interface JBChartView (Private)
|
||||
@@ -64,6 +66,12 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
@end
|
||||
|
||||
@interface JBFillLayer : CAShapeLayer
|
||||
|
||||
@property (nonatomic, assign) NSUInteger tag;
|
||||
|
||||
@end
|
||||
|
||||
@interface JBLineChartPoint : NSObject
|
||||
|
||||
@property (nonatomic, assign) CGPoint position;
|
||||
@@ -89,6 +97,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
// View helpers
|
||||
- (JBLineLayer *)lineLayerForLineIndex:(NSUInteger)lineIndex;
|
||||
- (JBFillLayer *)fillLayerForLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@end
|
||||
|
||||
@@ -97,6 +106,8 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
- (NSArray *)chartDataForLineChartLinesView:(JBLineChartLinesView*)lineChartLinesView;
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView colorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView selectedColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView fillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView selectedFillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
- (CGFloat)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView widthForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
- (CGFloat)paddingForLineChartLinesView:(JBLineChartLinesView *)lineChartLinesView;
|
||||
- (JBLineChartViewLineStyle)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView lineStyleForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
@@ -182,8 +193,10 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
if (self == [JBLineChartView class])
|
||||
{
|
||||
kJBLineChartViewDefaultLineColor = [UIColor blackColor];
|
||||
kJBLineChartViewDefaultDotColor = [UIColor blackColor];
|
||||
kJBLineChartViewDefaultLineFillColor = [UIColor clearColor];
|
||||
kJBLineChartViewDefaultLineSelectionColor = [UIColor whiteColor];
|
||||
kJBLineChartViewDefaultLineSelectionFillColor = [UIColor clearColor];
|
||||
kJBLineChartViewDefaultDotColor = [UIColor blackColor];
|
||||
kJBLineChartViewDefaultDotSelectionColor = [UIColor whiteColor];
|
||||
}
|
||||
}
|
||||
@@ -483,6 +496,24 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
return kJBLineChartViewDefaultLineSelectionColor;
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView fillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
if ([self.dataSource respondsToSelector:@selector(lineChartView:fillColorForLineAtLineIndex:)])
|
||||
{
|
||||
return [self.dataSource lineChartView:self fillColorForLineAtLineIndex:lineIndex];
|
||||
}
|
||||
return kJBLineChartViewDefaultLineFillColor;
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView selectedFillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
if ([self.dataSource respondsToSelector:@selector(lineChartView:selectionFillColorForLineAtLineIndex:)])
|
||||
{
|
||||
return [self.dataSource lineChartView:self selectionFillColorForLineAtLineIndex:lineIndex];
|
||||
}
|
||||
return kJBLineChartViewDefaultLineSelectionFillColor;
|
||||
}
|
||||
|
||||
- (CGFloat)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView widthForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
if ([self.dataSource respondsToSelector:@selector(lineChartView:widthForLineAtLineIndex:)])
|
||||
@@ -952,7 +983,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
self.zPosition = 0.0f;
|
||||
self.zPosition = 0.1f;
|
||||
self.fillColor = [UIColor clearColor].CGColor;
|
||||
}
|
||||
return self;
|
||||
@@ -978,6 +1009,24 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBFillLayer
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
self.zPosition = 0.0f;
|
||||
self.strokeColor = [UIColor clearColor].CGColor;
|
||||
self.lineWidth = 0.0f;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBLineChartPoint
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
@@ -1048,11 +1097,14 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
NSUInteger index = 0;
|
||||
NSArray *sortedLineData = [lineData sortedArrayUsingSelector:@selector(compare:)];
|
||||
CGFloat firstXPosition = 0.0f;
|
||||
CGFloat lastXPosition = 0.0f;
|
||||
for (JBLineChartPoint *lineChartPoint in sortedLineData)
|
||||
{
|
||||
if (index == 0)
|
||||
{
|
||||
[path moveToPoint:CGPointMake(lineChartPoint.position.x, fmin(self.bounds.size.height - padding, fmax(padding, lineChartPoint.position.y)))];
|
||||
firstXPosition = lineChartPoint.position.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1084,6 +1136,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
[path addLineToPoint:CGPointMake(lineChartPoint.position.x, fmin(self.bounds.size.height - padding, fmax(padding, lineChartPoint.position.y)))];
|
||||
}
|
||||
|
||||
lastXPosition = lineChartPoint.position.x;
|
||||
previousSlope = currentSlope;
|
||||
}
|
||||
previousLineChartPoint = lineChartPoint;
|
||||
@@ -1096,28 +1149,54 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
shapeLayer = [JBLineLayer layer];
|
||||
}
|
||||
|
||||
JBFillLayer *shapeFillLayer = [self fillLayerForLineIndex:lineIndex];
|
||||
if (shapeFillLayer == nil)
|
||||
{
|
||||
shapeFillLayer = [JBFillLayer layer];
|
||||
}
|
||||
|
||||
shapeLayer.tag = lineIndex;
|
||||
shapeFillLayer.tag = lineIndex;
|
||||
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:lineStyleForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (JBLineChartViewLineStyle)lineChartLineView:(JBLineChartLinesView *)lineChartLinesView lineStyleForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
shapeLayer.lineStyle = [self.delegate lineChartLinesView:self lineStyleForLineAtLineIndex:lineIndex];
|
||||
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:colorForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView colorForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
shapeLayer.strokeColor = [self.delegate lineChartLinesView:self colorForLineAtLineIndex:lineIndex].CGColor;
|
||||
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:fillColorForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView fillColorForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
shapeFillLayer.fillColor = [self.delegate lineChartLinesView:self fillColorForLineAtLineIndex:lineIndex].CGColor;
|
||||
|
||||
if (smoothLine == YES)
|
||||
{
|
||||
shapeLayer.lineCap = kCALineCapRound;
|
||||
shapeLayer.lineJoin = kCALineJoinRound;
|
||||
shapeFillLayer.lineCap = kCALineCapRound;
|
||||
shapeFillLayer.lineJoin = kCALineJoinRound;
|
||||
}
|
||||
else
|
||||
{
|
||||
shapeLayer.lineCap = kCALineCapButt;
|
||||
shapeLayer.lineJoin = kCALineJoinMiter;
|
||||
shapeFillLayer.lineCap = kCALineCapButt;
|
||||
shapeFillLayer.lineJoin = kCALineJoinMiter;
|
||||
}
|
||||
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:widthForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (CGFloat)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView widthForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
shapeLayer.lineWidth = [self.delegate lineChartLinesView:self widthForLineAtLineIndex:lineIndex];
|
||||
shapeLayer.path = path.CGPath;
|
||||
shapeLayer.frame = self.bounds;
|
||||
|
||||
// Continue the path for the fill layer (close and fill)
|
||||
UIBezierPath *fillPath = [path copy];
|
||||
|
||||
[fillPath addLineToPoint:CGPointMake(lastXPosition, self.bounds.size.height - padding)];
|
||||
[fillPath addLineToPoint:CGPointMake(firstXPosition, self.bounds.size.height - padding)];
|
||||
|
||||
shapeFillLayer.path = fillPath.CGPath;
|
||||
shapeFillLayer.frame = self.bounds;
|
||||
|
||||
[self.layer addSublayer:shapeFillLayer];
|
||||
[self.layer addSublayer:shapeLayer];
|
||||
|
||||
lineIndex++;
|
||||
@@ -1160,6 +1239,21 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
((JBLineLayer *)layer).opacity = (weakSelf.selectedLineIndex == kJBLineChartLinesViewUnselectedLineIndex) ? 1.0f : kJBLineChartLinesViewDefaultDimmedOpacity;
|
||||
}
|
||||
}
|
||||
else if ([layer isKindOfClass:[JBFillLayer class]])
|
||||
{
|
||||
if (((NSInteger)((JBFillLayer *)layer).tag) == weakSelf.selectedLineIndex)
|
||||
{
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:selectedFillColorForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView selectedFillColorForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
((JBFillLayer *)layer).fillColor = [self.delegate lineChartLinesView:self selectedFillColorForLineAtLineIndex:((JBLineLayer *)layer).tag].CGColor;
|
||||
((JBFillLayer *)layer).opacity = 1.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
NSAssert([self.delegate respondsToSelector:@selector(lineChartLinesView:fillColorForLineAtLineIndex:)], @"JBLineChartLinesView // delegate must implement - (UIColor *)lineChartLinesView:(JBLineChartLinesView *)lineChartLinesView fillColorForLineAtLineIndex:(NSUInteger)lineIndex");
|
||||
((JBFillLayer *)layer).fillColor = [self.delegate lineChartLinesView:self fillColorForLineAtLineIndex:((JBLineLayer *)layer).tag].CGColor;
|
||||
((JBFillLayer *)layer).opacity = (weakSelf.selectedLineIndex == kJBLineChartLinesViewUnselectedLineIndex) ? 1.0f : kJBLineChartLinesViewDefaultDimmedOpacity;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1192,6 +1286,8 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - View Helpers
|
||||
|
||||
- (JBLineLayer *)lineLayerForLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
for (CALayer *layer in [self.layer sublayers])
|
||||
@@ -1207,6 +1303,21 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (JBFillLayer *)fillLayerForLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
for (CALayer *layer in [self.layer sublayers])
|
||||
{
|
||||
if ([layer isKindOfClass:[JBFillLayer class]])
|
||||
{
|
||||
if (((JBFillLayer *)layer).tag == lineIndex)
|
||||
{
|
||||
return (JBFillLayer *)layer;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBLineChartDotsView
|
||||
|
||||
+4
-4
@@ -1,19 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "JBChartView"
|
||||
s.version = "2.5.5"
|
||||
s.version = "2.6.1"
|
||||
s.summary = "Jawbone's iOS-based charting library for both line and bar graphs."
|
||||
s.homepage = "https://github.com/Jawbone/JBChartView"
|
||||
|
||||
s.screenshot = "https://raw.github.com/Jawbone/JBChartView/master/Screenshots/main.png"
|
||||
s.screenshot = "https://raw.github.com/Jawbone/JBChartView/master/Screenshots/main.jpg"
|
||||
|
||||
s.license = { :type => 'Apache', :file => 'LICENSE' }
|
||||
s.author = { "Terry Worona" => "tworona@jawbone.com" }
|
||||
s.source = {
|
||||
:git => "https://github.com/Jawbone/JBChartView.git",
|
||||
:tag => "v2.5.5"
|
||||
:tag => "v2.6.1"
|
||||
}
|
||||
|
||||
s.platform = :ios, '7.0'
|
||||
s.platform = :ios, '6.0'
|
||||
s.source_files = 'Classes/**/*.{h,m}'
|
||||
s.requires_arc = true
|
||||
end
|
||||
|
||||
@@ -498,7 +498,7 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "JBChartViewDemo/JBChartViewDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "JBChartViewDemo/JBChartViewDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
@@ -512,7 +512,7 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "JBChartViewDemo/JBChartViewDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "JBChartViewDemo/JBChartViewDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
|
||||
#import "JBBaseNavigationController.h"
|
||||
|
||||
// Numerics
|
||||
NSInteger const kJBBaseNavigationControllerBarTintColorMinSystemVersion = 7;
|
||||
NSInteger const kJBBaseNavigationControllerTintColorMinSystemVersion = 7;
|
||||
|
||||
@implementation JBBaseNavigationController
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
@@ -18,9 +22,23 @@
|
||||
if (self)
|
||||
{
|
||||
self.navigationBar.translucent = NO;
|
||||
[[UINavigationBar appearance] setBarTintColor:kJBColorNavigationTint];
|
||||
[[UINavigationBar appearance] setTintColor:kJBColorNavigationBarTint];
|
||||
self.interactivePopGestureRecognizer.enabled = NO;
|
||||
|
||||
// Bar tint (iOS 7)
|
||||
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= kJBBaseNavigationControllerBarTintColorMinSystemVersion)
|
||||
{
|
||||
[[UINavigationBar appearance] setBarTintColor:kJBColorNavigationTint];
|
||||
}
|
||||
|
||||
// Tint (iOS 7)
|
||||
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= kJBBaseNavigationControllerTintColorMinSystemVersion)
|
||||
{
|
||||
[[UINavigationBar appearance] setTintColor:kJBColorNavigationBarTint];
|
||||
}
|
||||
|
||||
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
|
||||
{
|
||||
self.interactivePopGestureRecognizer.enabled = NO;
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@
|
||||
- (void)loadView
|
||||
{
|
||||
[super loadView];
|
||||
self.edgesForExtendedLayout = UIRectEdgeTop;
|
||||
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
|
||||
self.edgesForExtendedLayout = UIRectEdgeTop;
|
||||
}
|
||||
self.view.backgroundColor = [UIColor whiteColor];
|
||||
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:kJBImageIconJawboneLogo]];
|
||||
}
|
||||
|
||||
@@ -261,8 +261,25 @@ static UIColor *kJBChartInformationViewShadowColor = nil;
|
||||
|
||||
- (void)layoutSubviews
|
||||
{
|
||||
CGSize valueLabelSize = [self.valueLabel.text sizeWithAttributes:@{NSFontAttributeName:self.valueLabel.font}];
|
||||
CGSize unitLabelSize = [self.unitLabel.text sizeWithAttributes:@{NSFontAttributeName:self.unitLabel.font}];
|
||||
CGSize valueLabelSize = CGSizeZero;
|
||||
if ([self.valueLabel.text respondsToSelector:@selector(sizeWithAttributes:)])
|
||||
{
|
||||
valueLabelSize = [self.valueLabel.text sizeWithAttributes:@{NSFontAttributeName:self.valueLabel.font}];
|
||||
}
|
||||
else
|
||||
{
|
||||
valueLabelSize = [self.valueLabel.text sizeWithFont:self.valueLabel.font];
|
||||
}
|
||||
|
||||
CGSize unitLabelSize = CGSizeZero;
|
||||
if ([self.unitLabel.text respondsToSelector:@selector(sizeWithAttributes:)])
|
||||
{
|
||||
unitLabelSize = [self.unitLabel.text sizeWithAttributes:@{NSFontAttributeName:self.unitLabel.font}];
|
||||
}
|
||||
else
|
||||
{
|
||||
unitLabelSize = [self.unitLabel.text sizeWithFont:self.unitLabel.font];
|
||||
}
|
||||
|
||||
CGFloat xOffset = ceil((self.bounds.size.width - (valueLabelSize.width + unitLabelSize.width)) * 0.5);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# JBChartView
|
||||
<br/>
|
||||
<p align="center">
|
||||
<img src="https://raw.github.com/Jawbone/JBChartView/master/Screenshots/main.png">
|
||||
<img src="https://raw.github.com/Jawbone/JBChartView/master/Screenshots/main.jpg">
|
||||
</p>
|
||||
|
||||
Introducing <b>JBChartView - </b> Jawbone's iOS-based charting library for both line and bar graphs. It is easy to set-up, and highly customizable.
|
||||
@@ -18,13 +18,18 @@ Refer to the <a href="https://github.com/Jawbone/JBChartView/blob/master/CHANGEL
|
||||
|
||||
## Requirements
|
||||
|
||||
- Requires iOS 7 or later
|
||||
- Requires iOS 6 or later
|
||||
- Requires Automatic Reference Counting (ARC)
|
||||
|
||||
## Demo
|
||||
## Demo Project
|
||||
|
||||
Build and run the <i>JBChartViewDemo</i> project in Xcode. The demo demonstrates the use of both the line and bar charts. It also outlines how a chart's appearance can be customized.
|
||||
|
||||
## More Demos
|
||||
|
||||
- <a href="https://github.com/Jawbone/anscombe-quartet-ios">Amsombe's Quartet</a>: project showcasing the use of JBChartView in the classic data visualization example known as Anscombe's Quartet.
|
||||
- <a href="https://github.com/Jawbone/spark-friends-ios">Spark Friends</a>: project showcasing the use of JBChartView in the context of sparklines and (fake) user step data.
|
||||
|
||||
## Installation
|
||||
|
||||
<a href="http://cocoapods.org/" target="_blank">CocoaPods</a> is the recommended method of installing JBChartView.
|
||||
@@ -37,8 +42,8 @@ Simply add the following line to your <code>Podfile</code>:
|
||||
|
||||
Your Podfile should look something like:
|
||||
|
||||
platform :ios, '7.0'
|
||||
pod 'JBChartView', '~> 2.5.5'
|
||||
platform :ios, '6.0'
|
||||
pod 'JBChartView', '~> 2.6.1'
|
||||
|
||||
### The Old School Way
|
||||
|
||||
@@ -52,6 +57,17 @@ The simpliest way to use JBChartView with your application is to drag and drop t
|
||||
|
||||
All JBChartView implementations have a similiar data source and delgate pattern to <i>UITableView</i>. If you're familiar with using a <i>UITableView</i> or <i>UITableViewController</i>, using a JBChartView subclass should be a breeze!
|
||||
|
||||
#### Swift Projects
|
||||
|
||||
To use JBCartView in a Swift project add the following to your bridging header (JBChartView-Bridging-Header.h):
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "JBChartView/JBChartView.h"
|
||||
#import "JBChartView/JBBarChartView.h"
|
||||
#import "JBChartView/JBLineChartView.h"
|
||||
|
||||
For more information about adding bridging headers see <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html" target="_blank">Swift and Objective-C in the Same Project</a>.
|
||||
|
||||
#### JBBarChartView
|
||||
|
||||
To initialize a <i>JBBarChartView</i>, you only need a few lines of code (see below). Bar charts can also be initialized via a <b>nib</b> or with a <b>frame</b>.
|
||||
@@ -175,6 +191,11 @@ The color, width and style of each line in the chart can be customized via the <
|
||||
return ...; // color of line in chart
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView fillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of area under line in chart
|
||||
}
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView widthForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // width of line in chart
|
||||
@@ -202,6 +223,11 @@ Furthermore, the color and width of the selection view along with the color of t
|
||||
return ...; // color of selected line
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionFillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of area under selected line
|
||||
}
|
||||
|
||||
By default, each line will not show dots for each point. To enable this on a per-line basis:
|
||||
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView showsDotsForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 157 KiB |
Reference in New Issue
Block a user