gpt4 book ai didi

ios - 连接 PaintCode 按钮的最佳方式?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:43 27 4
gpt4 key购买 nike

我在 PaintCode 中创建了一个自定义按钮。 PC 有很多关于创建图形的文档,但没有使用它们。

我的方法有效,但它有一些问题,我将要解决...我采用了子类化 UIButton 的方式,我将它放在我的 Storyboard 中。然后我为它分配了我的自定义按钮的类,我们称它为 customButton。使用此方法,您可以在 IB 中连接一个操作,并且突出显示状态由 touchesBegantouchesEnded 方法与切换突出显示 View 的变量串联处理,但是问题是,突出显示的状态永远不会显示在快速触摸上。

customButton.m:

@interface customButton ()

@property BOOL isPressed;

@end

@implementation customButton

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}

-(void) awakeFromNib {
[super awakeFromNib];
_buttonText = @"Post";
}

- (void)drawRect:(CGRect)rect
{
[StyleKit drawCustomButtonWithFrame:rect pressed:_isPressed buttonText:_buttonText];
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
_isPressed = YES;
[self setNeedsDisplay];
}

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
_isPressed = NO;
[self setNeedsDisplay];
}

我的问题:是否有更好的方法来实现使用 PaintCode 绘制的按钮?这个的问题是它并不总是显示突出显示的状态,感觉有点老套。当然有更好的方法吗?

最佳答案

解决此问题的最佳方法是覆盖 UIControl 中的 highlighted 属性。它是按钮状态最准确的指示器。我正在使用 swift,但转换为 ObjC 很简单:

class VectorizedButton: UIButton {
override var highlighted: Bool {
didSet {
setNeedsDisplay()
}
}
}

现在,不是传入 _isPressed,而是传入 highlighted(或 [self highlighted])。

为了完整起见:

- (void)setHighlighted:(BOOL)isHigh
{
[super setHighlighted:isHigh];
[self setNeedsDisplay];
}

似乎有一个good article about this here .


完整代码示例:

注意我更进一步,如果按钮未启用或突出显示则突出显示。

class VectorizedButton: UIButton {

override var highlighted: Bool {
didSet {
setNeedsDisplay()
}
}

// MARK: - Init & Dealloc

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override func awakeFromNib() {
super.awakeFromNib()

backgroundColor = UIColor.clearColor()
}

// MARK: - Private methods

private var shouldHighlight: Bool {
return highlighted || !enabled
}

// MARK: - Public methods

override func drawRect(rect: CGRect) {
StyleKit.drawMyButton(frame: bounds, highlighted: shouldHighlight)
}

}

关于ios - 连接 PaintCode 按钮的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com