gpt4 book ai didi

ios - UILabel 子类不显示文本

转载 作者:行者123 更新时间:2023-12-01 17:22:59 25 4
gpt4 key购买 nike

我已经继承了 UILabel 类来覆盖 drawRect:方法。 IB 中的标签与创建的子类相关联。它出现在屏幕上,但不显示任何文本,无论是在 IB 中设置还是以编程方式设置。标签本身出现在屏幕上,当我记录它是text属性,显示OK。

这是我的代码:

MyLabel.h

#import <UIKit/UIKit.h>
@interface MyLabel : UILabel
@end

我的标签.m
#import "MyLabel.h"
#import <QuartzCore/QuartzCore.h>

@implementation MyLabel


- (void)drawRect:(CGRect)rect {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();

UIColor *borderColor = [UIColor colorWithWhite: .1f alpha: 5.f];
UIColor *topColor = [UIColor colorWithWhite: .3f alpha: 5.f];
UIColor *bottomColor = [UIColor colorWithWhite: .5f alpha: 5.f];
UIColor *innerGlow = [UIColor colorWithWhite: 1.f alpha: .25f];

NSArray *gradientColors = @[(id)topColor.CGColor, (id)bottomColor.CGColor];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) gradientColors, NULL);

CGFloat bWidth = self.frame.size.width;
CGFloat bHeight = self.frame.size.height;

UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, bWidth, bHeight)
cornerRadius: 0];
[roundedRectanglePath addClip];

CGGradientRef background = gradient;

CGContextDrawLinearGradient(context, background, CGPointMake(bWidth / 2.f, 0), CGPointMake(bWidth / 2.f, bHeight), 0);

[borderColor setStroke];
roundedRectanglePath.lineWidth = 6;
[roundedRectanglePath stroke];

CGFloat glowRadius = 3.f;
UIBezierPath *innerGlowRect = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(glowRadius, glowRadius, bWidth - 2 * glowRadius, bHeight - 2 * glowRadius) cornerRadius: 0];
[innerGlow setStroke];
innerGlowRect.lineWidth = 3;
[innerGlowRect stroke];

CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}

@end

也许我需要覆盖 drawTextInRect:方法,但我不知道如何。
感谢帮助!

最佳答案

您需要调用:

[super drawRect:rect];

在顶部或您的 drawRect: 方法。如果您需要更好地控制字符串的外观,您需要使用 NSString string drawing methods 自己绘制它。 .

关于ios - UILabel 子类不显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970786/

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