我想用一些不同的UI元素填充scrollView。 因此我想我会写一个方法来记住scrollView中的当前位置,并将元素添加到当前位置的scrollView。
类似的东西:
- (void)addUIElement:(id)element withWidth:(CGFloat)width andHeight:(CGFloat)height andYGap:(CGFloat)YGap {
element.frame = CGRectMake(currentScrollPos.x, (currentScrollPos.y + YGap), width, height);
[scrolly addSubview:element];
//And then set the current scroll position here
}
不幸的是,当我尝试访问element.frame = ...时,我得到的成员请求不是结构或联合。当我尝试[element frame] = ... Lvalue需要作为赋值的左操作数。
现在,首先我不确定将动态添加到scrollview的最佳方法是什么。也许任何人都有更好或更容易的方法。
然后另一方面,我不明白为什么以上不起作用?!我是否必须将我的元素投射到实际的类?我以为我不必这样做......然后我的方法就不再那么有意义了。或者至少需要更多的步骤......
答案 0 :(得分:0)
我认为这应该有效:
[element setFrame:...];
但是,如果你在你的方法中使用不同的UI元素,你可以使你的元素参数UIView *而不是id吗?这样你的代码就可以用于所有UIView子类(我想你真正需要它)
答案 1 :(得分:0)
不同之处在于“id”没有对帧的任何引用。它可能是任何。您希望在方法声明中执行(UIView *)element
,或者在调用element.frame时,您可以执行((UIView *)element).frame
。
(是的,你在屏幕上放置的所有内容都继承自UIView
- UIButton
,UIImageView
等。