使用 UISlider 更改画笔大小

Posted

技术标签:

【中文标题】使用 UISlider 更改画笔大小【英文标题】:Change Brush Size Using UISlider 【发布时间】:2011-11-18 04:37:06 【问题描述】:

我正在尝试使用 UISlider 更改我正在制作的 iPad 应用学校项目的画笔大小,但我不知道如何。

我已经有一个 UISlider 连接到它的出口和动作。

这是我的画笔大小代码。

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 25.0);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), redAmt, greenAmt, blueAmt, alpha);
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), endingPoint.x, endingPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), endingPoint.x, endingPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());
    CGContextFlush(UIGraphicsGetCurrentContext());
    touchDraw.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

【问题讨论】:

设置线宽没问题。你能告诉你的代码你是怎么画的吗? 你去,先生,我编辑了它。它只是一个简单的绘图应用程序。 【参考方案1】:

我不确定我是否关注你。现在您只需将线宽设置为25.0f。为什么不将变量设置为UISlider 每次更改时的值,并将线宽设置为该值?

【讨论】:

这样做比每次都向滑块询问线宽要好。使用视图作为值的主要存储是一种反模式。【参考方案2】:

这一行:

CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 25.0);

需要是这样的:

CGContextSetLineWidth(UIGraphicsGetCurrentContext(), self.brushSizeSlider.value);

其中brushSizeSlider 是连接到画笔大小滑块的IBOutlet 属性的名称。

【讨论】:

当然你也必须设置 UISlider 的最小值和最大值。 @rob 只是为了澄清先生,IBOutlet 不是 IBAction?因为 XCode 将其更改为“self->slider.value” @Cristiano,好的,有一个 IBAction 方法,在更改滑块值时将调用该方法。使用 sender 对象获取值。用它来画画。 @Cristiano:您应该将IBOutlet 宏放在属性上(如@property(weak) IBOutlet UISlider *brushSizeSlider;),而不是实例变量。然后,除其他优点外,您还可以控制是否拥有 (strong) 或不拥有 (weak) 出口的价值。 《资源规划指南》提供了有关网点所有权政策的指导。

以上是关于使用 UISlider 更改画笔大小的主要内容,如果未能解决你的问题,请参考以下文章

查找时如何更改 UISlider 拇指的大小

在 Swift 中更改 UISlider 拇指的大小

更改 UISlider thumbImage 的大小

如何以编程方式更改 UISlider 拇指图像的大小

iOS - 折叠动画 UISlider

UISlider 值更改时单元格未更新值