我今天早上開始使用這個小部件。我現在在我的iPhone上睡覺,所以不能發佈我想要發佈的內容,但是當我在早上上班時,我會。
我已經設法使用它,並做你想要做什麼動態添加UIView,或者我應該說,F3PlotStrip。
我也做了.h和.m,ARC兼容。不知道你是否做到了。
明天我會用一些很好的代碼來完成,它使用NSTimer讀取NSArray的內容以動態繪製動畫。再次以視圖添加到我的viewcontroller作爲子視圖。
沒有詳細看過你的代碼,發佈了我明天工作的內容。
好吧 - 我在這裏工作,坐在Xcode的前面。這是我用來作爲這個小部件的基本測試平臺的VC。我昨晚很快就把它撞倒了,但是完成了這項工作。最初,我已經將一個UIView添加到了我的Storyboard的第一個VC中,並將其分類到F3PlotStrip。但是,鑑於我看到你在動態添加UIView時遇到問題,我想我會放棄它。你和我的唯一區別就是我在alloc-init之後設置了UIView的框架。看看你的想法。它使用Sparkline方法並將圖形動畫顯示在屏幕上。
//
// PlotViewController.m
// PlotTest
//
// Created by Carl Hine on 16/05/2013.
// Copyright (c) 2013 Carl Hine. All rights reserved.
//
#define COLOUR_POWDER_BLUE [[UIColor alloc] initWithRed:176/255.0f green:224/255.0f blue:230/255.0f alpha:1]
#import "F3PlotStrip.h"
#import "PlotViewController.h"
@interface PlotViewController()
@property (strong, nonatomic) IBOutlet F3PlotStrip *IBOPLotView;
@property (strong, nonatomic) NSTimer *plotStipTimer;
@property (strong, nonatomic) NSArray *plotData;
@property (nonatomic) NSInteger plotDataArrayIdx;
@property (strong, nonatomic) F3PlotStrip *plotView2;
@end
@implementation PlotViewController
@synthesize plotStipTimer;
@synthesize plotData;
@synthesize plotDataArrayIdx;
BOOL bUsingDynPlot = YES;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)testGraph:(NSTimer *)a_timer {
float RSEFigure = [[self.plotData objectAtIndex:plotDataArrayIdx] floatValue];
if (bUsingDynPlot)
_plotView2.value = RSEFigure;
else
_IBOPLotView.value = RSEFigure;
++plotDataArrayIdx;
if (plotDataArrayIdx == [self.plotData count]) {
[plotStipTimer invalidate];
plotStipTimer = nil;
}
}
- (void)configurePLotStrip:(F3PlotStrip *)plotStrip {
plotDataArrayIdx = 0;
// Random rubbish that makes it look like a heartbeat :
self.plotData = [NSArray arrayWithObjects:[NSNumber numberWithFloat:68.1f],
[NSNumber numberWithFloat:70.2f],
[NSNumber numberWithFloat:71.3f],
[NSNumber numberWithFloat:72.4f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:100.5f],
[NSNumber numberWithFloat:124.5f],
[NSNumber numberWithFloat:10.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:70.6f],
[NSNumber numberWithFloat:70.2f],
[NSNumber numberWithFloat:71.3f],
[NSNumber numberWithFloat:72.4f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:100.5f],
[NSNumber numberWithFloat:124.5f],
[NSNumber numberWithFloat:10.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:70.6f],
[NSNumber numberWithFloat:70.2f],
[NSNumber numberWithFloat:71.3f],
[NSNumber numberWithFloat:72.4f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:100.5f],
[NSNumber numberWithFloat:124.5f],
[NSNumber numberWithFloat:10.5f],
[NSNumber numberWithFloat:73.5f],
[NSNumber numberWithFloat:70.6f],
nil];
// Get value bounds
float max = -999999;
float min = 999999;
for (NSInteger i = 0;i <= self.plotData.count - 1;++i) {
float RSEFigure = [[self.plotData objectAtIndex:i] floatValue];
if (RSEFigure > max)
max = RSEFigure;
if (RSEFigure < min)
min = RSEFigure;
}
plotStrip.lowerLimit = min;
plotStrip.upperLimit = max;
plotStrip.lineColor = COLOUR_POWDER_BLUE;
[self.view addSubview:_IBOPLotView];
plotStipTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(testGraph:) userInfo:nil repeats:YES];
plotStrip.showDot = YES;
plotStrip.capacity = self.plotData.count;
}
- (void)viewDidLoad {
if (bUsingDynPlot) {
// Dynamically adding to view.
_plotView2 = [[F3PlotStrip alloc] init];
_plotView2.backgroundColor = [UIColor redColor];
_plotView2.frame = CGRectMake(0, 100, 293, 35);
[[self view] addSubview:_plotView2];
[self configurePLotStrip:_plotView2];
} else {
[self configurePLotStrip:_IBOPLotView];
}
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
我希望這很容易讓你投入到一個新的風險投資。假如你在你的項目文件夾中有F3PlotStrip.h和.m,那麼除了添加一個UIView到VC之外,你還是很好。
Carl。
爲什麼要在'configurePLotStrip'方法中每次添加'[self.view addSubview:_IBOPLotView];'' –
是的。這似乎有點毫無意義。我基本上需要一個Sparkline類型的繪圖儀。我在GitHub上找到了該對象,並用Google搜索瞭解是否有任何問題。那是我找到這個頁面的時候。本章不能以編程方式添加PlotView。無論如何,它不能正確工作。我不在我的MAC前面,在我的手機上偷拍。但我想addSubview是從動態添加方面留下的剩餘線。 –
Oooops。道歉。你是那個人!剛注意到。它有什麼用途嗎?很高興提供幫助,如果有的話。 –