我在settings.plist中定义了框架,并在我的类中作为字符串访问它时传递它会产生错误:
以下是代码:
NSString * frame = [selectable objectForKey:@"Frame"];
[self selectButtons:@"Select." andFrame:frame andValue:goal];
-(void)selectButtons:(NSString *)text andFrame:(NSString *)frame andValue:(int)goal
{
UIColor * c = [UIColor clearColor];
UIFont * font = BUTTON_TITLE;
UIColor * f = DESC_Color_White;
select = [ApplicationHelpers buttonWithTitle:text andBgColor:c andTitleColor:f andTitleFont:font];
CGRect frame1 = frame; -------->>>>>> gives error here
select.frame = frame1;
UIImage * buttonImage = [UIImage imageNamed:@"scneariosButtonSmall1.png"];
UIImage * strechableButtonImage = [buttonImage stretchableImageWithLeftCapWidth:12 topCapHeight:0];
[select setBackgroundImage:strechableButtonImage forState:UIControlStateNormal];
[select addTarget:self action:@selector(selectClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:select];
}
请给我一些暗示???
谢谢,
答案 0 :(得分:2)
无法在CGRect之间隐式转换NSString。您需要使用NSStringFromCGRect和CGRectFromString等功能进行转换。
CGRect frame1 = CGRectFromString(frame);
...
// when you need to save the CGRect:
NSString* frameString = NSStringFromCGRect(frame1);
答案 1 :(得分:1)
您不能只将字符串分配给CGRect
变量,并期望它能够正常工作。您必须将一种类型转换为另一种类型。根据帧字符串的格式,您可以使用CGRectFromString()
函数(使用NSStringFromCGRect()
)从CGRect
创建相应的字符串。或者您必须自己手动解析字符串。
或者甚至更好,将您的帧值包装在NSValue
+[NSValue valueWithCGRect:]
和-[NSValue CGRectValue]
。