我得到了不兼容的指针类型,将UIFont发送到NSDictonary类型的参数,它让我得到一个信号SIGABRT,我不知道这意味着什么是我的代码,我得到错误...
- (void)drawDayNumber {
if (self.selectionState == DSLCalendarDayViewNotSelected) {
[[UIColor colorWithWhite:66.0/255.0 alpha:1.0] set];
}
else {
[[UIColor whiteColor] set];
}
UIFont *textFont = [UIFont boldSystemFontOfSize:17.0];
CGSize textSize = [_labelText sizeWithAttributes:textFont];//Im getting it here.
CGRect textRect = CGRectMake(ceilf(CGRectGetMidX(self.bounds) - (textSize.width /2.0)), ceilf(CGRectGetMidY(self.bounds) - (textSize.height / 2.0)), textSize.width, textSize.height);
[_labelText drawInRect:textRect withAttributes:textFont];//And here.
}
答案 0 :(得分:1)
问题在于此代码:
[_labelText drawInRect:textRect withAttributes:textFont];
drawInRect:withAttributes:
方法的第二个参数需要NSDictionary
,您正在传递UIFont
个对象。这就是崩溃的原因。
您应该执行以下操作:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: textFont,NSFontAttributeName,nil];
[_labelText drawInRect:textRect withAttributes:dict];
或强>
您可以使用:drawInRect:withFont
方法。
[_labelText drawInRect:rect withFont:textFont];
在以下代码中:
CGSize textSize = [_labelText sizeWithAttributes:textFont];
此处参数错误,sizeWithAttributes:
方法需要NSDictionary
,您正在传递UIFont
个对象。
将其更改为:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: textFont,NSFontAttributeName,nil];
CGSize textSize = [_labelText sizeWithAttributes:dict];
答案 1 :(得分:1)
您应该为属性创建字典:
NSDictionary *attributes = @{NSFontAttributeName : textFont};
您应该使用此attributes
字典作为这些方法的参数。如果您也想设置字体颜色,可以执行以下操作:
UIColor *color;
if (self.selectionState == DSLCalendarDayViewNotSelected)
color = [UIColor colorWithWhite:66.0/255.0 alpha:1.0];
else
color = [UIColor whiteColor];
UIFont *textFont = [UIFont boldSystemFontOfSize:17.0];
NSDictionary *attributes = @{NSFontAttributeName : textFont,
NSForegroundColorAttributeName : color};
CGSize textSize = [_labelText sizeWithAttributes:attributes];
CGRect textRect = CGRectMake(ceilf(CGRectGetMidX(self.bounds) - (textSize.width /2.0)), ceilf(CGRectGetMidY(self.bounds) - (textSize.height / 2.0)), textSize.width, textSize.height);
[_labelText drawInRect:textRect withAttributes:attributes];
有关属性的详细信息,请参阅NSAttributedString Application Kit Additions Reference以获取可在此NSDictionary
中使用的各种密钥的列表。
答案 2 :(得分:0)
您正在将UIFont
对象传递给需要字典的方法。您需要创建一个字典,用于设置您希望设置的键。
你可能在想这个方法。
[_labelText sizeWithFont:font];