菜鸟教程小白 发表于 2022-12-13 04:37:29

ios - 选择时更改 UIBezierPath 颜色


                                            <p><p>我在 LayoutView 中绘制了 3 个正方形</p>

<pre><code>- (void)drawRect:(CGRect)rect

    self.room1 = ;
    ;
    ;
    [setStroke];
    self.room1.lineWidth = 1;
    ;
</code></pre>

<p>然后我找到正确的 UIBezierPath </p>

<pre><code>- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@&#34;touch here&#34;);

    UITouch *touch = ;
    CGPoint touchPoint = ;
    if ()
    {
      // do stuff
      NSLog(@&#34;room1 %@&#34; , self.room1);

      [ setFill];
      ;
      ;
    }
}
</code></pre>

<p>这是工作我触摸房间 1 和日志打印“room1”</p>

<p>但是如何更改 room1 的颜色呢?</p>

<p>此时我得到一个错误</p>

<p><strong>:CGContextSetFillColorWithColor:无效上下文 0x0。这是一个严重的错误。 ...</strong></p>

<p>感谢您的帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>实现此目的的一种方法是在 touchesBegan 方法中跟踪选定状态,并将所有 fill 和 setFill 语句保留在 drawRect 中。在下面的示例中,我在方 block 内每次触摸时切换选定状态,方 block 颜色在蓝色和红色之间交替。</p>

<pre><code>@interface RDView ()
@property (strong,nonatomic) UIBezierPath *room1;
@property (strong,nonatomic) UIColor *normalColor;
@property (strong,nonatomic) UIColor *selectedColor;
@property (nonatomic) BOOL isSelected;
@end

@implementation RDView

-(id)initWithCoder:(NSCoder *)aDecoder {
    if (self = ) {
      self.normalColor = ;
      self.selectedColor = ;
      self.isSelected = NO;
    }
    return self;
}

- (void)drawRect:(CGRect)rect {

    self.room1 = ;
    UIColor *colorToUse = (self.isSelected)? self.selectedColor : self.normalColor;
    ;
    ;
    [setStroke];
    self.room1.lineWidth = 1;
    ;
}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint touchPoint = ;
    if (){
      self.isSelected = ! self.isSelected;
      ;
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 选择时更改 UIBezierPath 颜色,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19353923/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19353923/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 选择时更改 UIBezierPath 颜色