我有一个我不知道的对象是什么类型,可能是UILabel
,UIImageView
或UIButton
。我正在使用if
条件检查所有三个。
if([obj2 isKindOfClass:[UIImageView class]])
{
[(UIImageView*)obj2 setFrame:frame];
}
else if ([obj2 isKindOfClass:[UILabel class]])
{
[(UILabel*)obj2 setFrame:frame];
}
else
{
[(UIButton*)obj2 setFrame:frame];
}
我的问题是如何再次获取其框架,id
类型没有属性frame
。有关如何做到这一点的任何想法?
答案 0 :(得分:4)
所有这些班级都有共同的祖先; UIView
。所以盲目地将id
投射到UIView
并将自己打倒:
UIView *obj2View = (UIView *)obj2;
obj2View.frame = CGRectMake(x, y, w, h);
CGRect r = obj2View.frame;
答案 1 :(得分:2)
您可以通过执行以下操作将其转换为UIView
:
[(UIView *)obj2 frame]
你似乎已经在做什么了,我看不出你的问题是什么?或者,如果'id'保证是UIView
的子类,在您的示例中看起来似乎是这样,首先使用UIView
而不是id
。
答案 2 :(得分:0)
无需施法即可使用。试试这个。它正在我的工作。 :
id obj2 = some object;
CGRect frame = someFrame;
[obj2 setFrame:frame];