我有这样的形象自定义视图,并将其作品(文字字体和文本颜色我在设置的drawRect)IBDesignable查看渲染
+ **************** *** +
*文本01IMAGE *
*文本02 _______ *
+ ********** ********* +
现在我想设置字体和颜色从接口Builde,但我得到的错误:
IB Designables: Failed to render instance of AvailableSeatView: Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
这里我的代码:
在AvailableSeatView.h
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface AvailableSeatView : UIView
@property (nonatomic) IBInspectable UIImage *image;
@property (nonatomic) IBInspectable NSInteger numberSeats;
@property (nonatomic) IBInspectable UIFont *numberSeatsFont;
@property (nonatomic) IBInspectable UIColor *numberSeatsColor;
@property (nonatomic) IBInspectable NSString *title;
在AvailableSeatView.m
@implementation AvailableSeatView
- (void)drawRect:(CGRect)rect {
//UIImage
CGRect myFrame = self.bounds;
CGFloat yImage = myFrame.size.height/2 - self.image.size.height < 0 ? 0 : myFrame.size.height/2 - self.image.size.height;
CGRect imageFrame = CGRectMake(myFrame.size.width/2, yImage, self.image.size.width, self.image.size.height);
[self.image drawInRect:imageFrame];
//UILabel number of seats
[self drawString:[NSString stringWithFormat:@"%li", (long)self.numberSeats]
withFont:self.numberSeatsFont
andColor:self.numberSeatsColor
aligment: NSTextAlignmentRight
inRect:CGRectMake(0, yImage, imageFrame.origin.x, self.image.size.height)];
//UILabel Title
UIFont *titleFont = [UIFont systemFontOfSize:20];
UIColor *titleColor = [UIColor redColor];
[self drawString:self.title
withFont:titleFont
andColor:titleColor
aligment: NSTextAlignmentCenter
inRect:CGRectMake(0, myFrame.size.height/2, myFrame.size.width, myFrame.size.height/2)];
}
- (void) drawString: (NSString*) s
withFont: (UIFont*) font
andColor: (UIColor *)color
aligment: (NSTextAlignment) alignment
inRect: (CGRect) contextRect {
CGFloat fontHeight = font.pointSize;
CGRect textRect = CGRectMake(0, contextRect.origin.y, contextRect.size.width, fontHeight);
NSMutableParagraphStyle* p = [NSMutableParagraphStyle new];
p.alignment = alignment;
[s drawInRect:textRect withAttributes:@{NSFontAttributeName: font,
NSForegroundColorAttributeName: color,
NSParagraphStyleAttributeName: p}];
}
@end
在谷歌搜索后,我发现这个职位:IBDesignable View Rendering times out我尝试做覆盖initWithFrame,initWithCoder但它仍然无法正常工作。
我可以在[苹果]参见(https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/Chapters/CreatingaLiveViewofaCustomObject.html)'如果你需要为创建代码一个只能在Interface Builder中运行的自定义视图,从prepareForInterfaceBuilder方法中调用该代码,但在调试后,它不会运行到此方法中,以至于无法运行 – l3adl3oy