UIScroll 及其嵌套元素

Posted

技术标签:

【中文标题】UIScroll 及其嵌套元素【英文标题】:UIScroll and its nested elements 【发布时间】:2011-08-30 17:42:38 【问题描述】:

我创建了一个 UIScrollView。 我设置了尺寸,然后尝试添加 UILabel。

但是标签都是白色文本(很烦人,因为我必须更改每个标签的属性)。

有没有办法让所有标签(从 IB 拖到视图的新标签)的默认文本颜色为黑色?

已编辑以匹配 cmets

我想尽可能多地使用 IB。因此,我想将 UILabel 从库调色板拖到 UIView。当我这样做时, UILabel 设置为白色(默认)。我希望默认颜色为黑色。我知道我可以通过编程方式做到这一点,但我会尽量避免这种情况,除非我真的需要这样做。

【问题讨论】:

【参考方案1】:

没有简单的方法可以完全按照您的意愿行事。但是您可以做的是创建一个具有所需属性的标签,将其存储在绘图板上的某个位置而不是视图中,然后在每次需要新标签时复制它,而不是拖动新标签。您可以使用选项+拖动轻松复制。

【讨论】:

【参考方案2】:

我认为简短的回答是“不,没有简单的方法来做你所描述的事情。”

我能想到的最简单的方法是创建所有 UILabel(默认设置为白色文本),然后按住 control 并单击它们并一次性设置它们的文本颜色——所有其他方法都不太方便,或者本质上需要 Apple 开源 Xcode 或 UIKit,以便我们了解它们的内部结构。

【讨论】:

【参考方案3】:

是的,有办法。您可以循环目标视图的子视图,例如:

UIView * targetView;

[...]

for(id subView in targetView.subViews)
    if([subView isKindOfClass:[UILabel class]])
        [subView setBackgroundColor:clearColor];
    

【讨论】:

是否要更改首选项,以便拖动的所有元素都有黑色文本? 你的意思是文字颜色?当然只是设置 setTextColor 而不是 setBackgroundColor。也许我误解了你所说的拖拽是什么意思?您是指 UILabel 仅指您从 Interface Builder 中“拖动”的内容吗? 我想尽可能多地使用 IB。因此,我想将 UILabel 从库调色板拖到 UIView。当我这样做时, UILabel 设置为白色(默认)。我希望默认颜色为黑色。我知道我可以以编程方式执行此操作,但除非我真的需要,否则我会尽量避免这种情况。【参考方案4】:

为什么标签必须来自对象库?您可以通过仅将一个 UILable 从库中拖动到您的视图来获得所需的功能,将所有属性设置为您想要的默认值并点击一次 copy(command+c)。现在,您可以根据需要多次粘贴(command+v)带有特殊属性值的 UILabel,IBActions 和 outlets 也将保留在副本中。

如果您打算调整比字体颜色和大小更多的相关属性,那么我会建议一种更自定义的方法,在您在 IB 中进行批量拖放工作之前只需要最少的编码。 在 Xcode 中子类化一个 UILable,在一个简单的返回方法中只设置一次所有属性,然后从“init”和“awakeFromNib”调用此方法现在回到 IB 并执行所有拖放操作,确保标签是你的子类。

但是,我认为如果你经常这样做,特别是如果你将来会再次做类似的事情,你会节省大量的时间和精力来在代码中实现这个“标签工厂” .它的代码可能比您想象的要少,而且更重要的是您可以在下一个应用程序中重用它。反正这是我的 2 美分,祝你好运

【讨论】:

以上是关于UIScroll 及其嵌套元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 iscroll 时触发两次 Onclick 事件

IScroll的诞生和缺点

iscroll在谷歌浏览器中bug

iScroll 重叠 textarea 触摸或点击书写

iScroll 4 不适用于表单 <select> 元素 iPhone Safari 和 Android 浏览器

IScroll介绍--案例