0

我想用很多不同的 UI 元素填充一个滚动视图。因此我想我会写一个方法来记住滚动视图中的当前位置,并将元素添加到当前位置的滚动视图中。

就像是:

- (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 需要作为赋值的左操作数时。

现在,首先我不确定将对象动态添加到滚动视图的最佳方法是什么。也许任何人都有更好或更简单的方法。

然后另一方面,我不明白为什么上面的方法不起作用?!我是否必须将我的元素转换为实际的类?我以为我不必这样做......那么我的方法就不再那么有意义了。或者至少需要更多的步骤......

4

2 回答 2

0

我认为这应该可行:

 [element setFrame:...];

但是,如果您在方法中使用不同的 UI 元素,您可以让元素参数 UIView* 而不是 id?这样,您的代码将适用于所有 UIView 子类(我想这是您真正需要的)

于 2010-08-04T14:56:59.853 回答
0

不同之处在于“id”没有对帧的任何引用。它可以是任何东西。您想改为(UIView *)element在方法声明中执行,或者在对 element.frame 的调用中执行((UIView *)element).frame.

(是的,你放在屏幕上的所有东西都继承自UIView-- UIButtonUIImageView等)

于 2010-08-04T15:06:08.267 回答