菜鸟教程小白 发表于 2022-12-12 10:02:50

ios - F3PlotStrip 动态添加图有问题


                                            <p><p>我目前正在开发基于 Graphs 的 iOS 应用程序。为此,我使用了一个名为 <a href="http://www.cocoacontrols.com/controls/f3plotstrip" rel="noreferrer noopener nofollow">F3PlotStrip</a> 的第三方控件。 .</p>

<p>实现类似于:</p>

<pre><code>- (void)viewDidLoad
{
    _ecgView = [ initWithFrame:CGRectMake(50, 50, 648, 299)];
    _ecgView.lineColor = ;
    _ecgView.lowerLimit = -10.0f;
    _ecgView.upperLimit = 10.0f;
    ;
    ;
}

- (void)testGraph:(NSTimer *)a_timer
{
    _ecgView.value = 1.0;
}
</code></pre>

<p>但我得到的结果如下:</p>

<p> <img src="/image/92HDG.png" alt="Code F3"/> </p>

<p>然后我在 <code>xib</code> 中添加了一个 <code>UIView</code> 并将其类更改为 <code>F3PlotStrip</code> 然后将其作为 <code>_ecgView< 连接到 socket </code>。</p>

<p>然后我将代码更改为:</p>

<pre><code>- (void)viewDidLoad
{
    _ecgView.lineColor = ;
    _ecgView.lowerLimit = -10.0f;
    _ecgView.upperLimit = 10.0f;
    ;
}

- (void)testGraph:(NSTimer *)a_timer
{
    _ecgView.value = 1.0;
}
</code></pre>

<p>这一次,我得到了实际的输出:</p>

<p> <img src="/image/isHXq.png" alt="IB F3"/> </p>

<p>但是为什么当我通过代码添加 View 时会出现问题?我不能依赖第二种方法(通过 IB),因为我需要动态添加图表。有没有办法解决这个问题?还是这是 F3PlotStrip 的 bug?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我今天早上开始使用这个小部件。我现在在 iPhone 上躺在床上,所以无法发布我想发布的内容,但我会在早上上类时发布。</p>

<p>我已经设法使用它并通过动态添加的 UIView(或者我应该说 F3PlotStrip)执行您想要执行的操作。</p>

<p>我还制作了 .h 和 .m,也符合 ARC。不确定你是否这样做了。</p>

<p>我将在明天完成一些不错的代码,这些代码使用 NSTimer 读取 NSArray 的内容以动态绘制,并带有动画。再次使用我作为 subview 添加到我的 ViewController 的 View 。</p>

<p>没有详细查看您的代码,因为我明天已经设法开始工作了。</p>

<p>好的 - 我在工作,坐在 Xcode 前面。这是我用作此小部件的基本测试平台的 VC。昨晚我很快就把它敲了起来,但完成了工作。最初,我在我的 Storyboard 第一个 VC 中添加了一个 UIView,并将其子类化为 F3PlotStrip。但是,鉴于我看到您在动态添加 UIView 时遇到问题,我想我会试一试。你和我的唯一区别是我在 alloc-init 之后设置 UIView 的框架。看你怎么想。它使用 Sparkline 方法以及在屏幕上以动画形式显示图表。</p>

<pre><code>//
//PlotViewController.m
//PlotTest
//
//Created by Carl Hine on 16/05/2013.
//Copyright (c) 2013 Carl Hine. All rights reserved.
//

#define COLOUR_POWDER_BLUE                  [ initWithRed:176/255.0f   green:224/255.0f blue:230/255.0f alpha:1]

#import &#34;F3PlotStrip.h&#34;
#import &#34;PlotViewController.h&#34;

@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 = ;
    if (self) {
      // Custom initialization
    }
    return self;
}

- (void)testGraph:(NSTimer *)a_timer {

    float RSEFigure = [ floatValue];

    if (bUsingDynPlot)
      _plotView2.value = RSEFigure;
    else
      _IBOPLotView.value = RSEFigure;

    ++plotDataArrayIdx;

    if (plotDataArrayIdx == ) {
      ;
      plotStipTimer = nil;
    }

}

- (void)configurePLotStrip:(F3PlotStrip *)plotStrip {

    plotDataArrayIdx = 0;
    // Random rubbish that makes it look like a heartbeat :
    self.plotData = ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               ,
               nil];

    // Get value bounds
    float max = -999999;
    float min = 999999;
    for (NSInteger i = 0;i &lt;= self.plotData.count - 1;++i) {
      float RSEFigure = [ floatValue];
      if (RSEFigure &gt; max)
            max = RSEFigure;
      if (RSEFigure &lt; min)
            min = RSEFigure;
    }

    plotStrip.lowerLimit = min;
    plotStrip.upperLimit = max;
    plotStrip.lineColor = COLOUR_POWDER_BLUE;
    ;
    plotStipTimer = ;
    plotStrip.showDot = YES;
    plotStrip.capacity = self.plotData.count;

}

- (void)viewDidLoad {

    if (bUsingDynPlot) {
      // Dynamically adding to view.
      _plotView2 = [ init];
      _plotView2.backgroundColor = ;
      _plotView2.frame = CGRectMake(0, 100, 293, 35);
      [ addSubview:_plotView2];
      ;
    } else {
      ;
    }
    ;

}

- (void)didReceiveMemoryWarning {

    ;

}

@end
</code></pre>

<p>我希望这很容易让您加入新的 VC。如果您的项目文件夹中有 F3PlotStrip.h 和 .m,那么您就可以使用了 - 除了将 UIView 添加到 VC 之外。</p>

<p>卡尔。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - F3PlotStrip 动态添加图有问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15780266/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15780266/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - F3PlotStrip 动态添加图有问题