如何标准化 iPhone 应用程序的外观

发布于 2024-12-09 03:30:20 字数 821 浏览 2 评论 0原文

我正在尝试弄清楚如何在我的 iPhone 应用程序中创建标准的外观和感觉。 因此,如果我想更改 UIView 的背景,我通常会在我的所有视图控制器中执行类似的操作:

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]

当您有大约 50 个 UIView 需要管理时,这会变得相当多余且容易出错。当然,客户每三天左右就会更改一次他们想要的背景图像。所以我的下一个选择是创建帮助程序文件,例如:

@implementation GuiDefaultsUIView
+ (void) setDefaultProperties:(UIView *) view {
    view.backgroundColor = [UIColor groupTableViewBackgroundColor];

然后手动调用 [GuiDefaultsUIView setDefaultProperties:self.view]; 来自每个视图控制器。这是可行的,这就是我现在所做的,但这意味着对于每个 UI 对象(例如 UIButton、UITableView),我需要为每个类的每个实例调用类似的函数。

我想做的是标准化它,以便我获得默认的外观和感觉,我可以在需要时覆盖它。我考虑过子类化 UIView / UIButton / UITableView 但这似乎不是正确的方法。添加类别会很好,但我认为覆盖默认方法(例如:init)也不是正确的方法。

所以。你会如何标准化你的外观和感觉?

I'm trying to figure out how to create a standard look and feel across my iphone app.
So if I ever wanted to change the background for the UIView I would normally do something like this in all my view controllers:

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]

This becomes quite redundant and error-prone when you have like 50 UIViews to manage. And of course clients change their desired background image every 3 days or so. So my next option is to create helper files, eg:

@implementation GuiDefaultsUIView
+ (void) setDefaultProperties:(UIView *) view {
    view.backgroundColor = [UIColor groupTableViewBackgroundColor];

And then manually call [GuiDefaultsUIView setDefaultProperties:self.view];
from each view controller. This works, and it's how I'm doing it now but it means that for every UI object (eg UIButton, UITableView) I'd need to call a similar function for every instance of every class.

What I would like to do is to standardize this so that I get a default look and feel which I can overwrite whenever needed. I've considered Subclassing UIView / UIButton / UITableView but that does not seem like a right way to do it. Adding categories would be nice but I dont think overriding the default methods (eg: init) would be the Right Way to go either.

So. how would you standardize your look and feel?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

空城缀染半城烟沙 2024-12-16 03:30:20

这是一个相对简单的问题;)
例如,您只需创建一个名为 MyVievController 的自定义 UIViewController 子类,并从该类继承 ViewController。
然后在MyViewController的init和viewWillAppear等中,您可以进行自定义,只需确保在子类中调用super即可。
您可以对 UITableViewController 甚至 UIView 执行相同的操作,以自定义绘图或设置标准属性。

我们一直在我们的应用程序中这样做,而且效果很好。在某些情况下,类别也很好,例如您可以覆盖 UINavigationBar 的 drawRect 方法。

This is a relatively simple one ;)
You just create a custom UIViewController Subclass named MyVievControllerfor example, and inherit ViewControllers from that class.
Then in the init and viewWillAppear etc. of MyViewController, you can do your customization, just make sure to call super in your subclasses.
You can do the same for UITableViewControllers and even for UIViews, to customize drawing or set standard properties.

We do that in our Apps all the time and it works great.Categories are, in some cases, fine too, for example you can override the drawRect-Method of the UINavigationBar.

半世晨晓 2024-12-16 03:30:20

你可以做的(我已经做过并在一些项目中看到过)是创建一个类来存储所有常量。然后,当您需要它们时,只需导入它们并根据需要使用即可。

What you could do (I've done and seen it in some propjects) is make a class where you store all your constants. Then when you need them just import them and use as appropriate.

短叹 2024-12-16 03:30:20

为什么不为您的所有视图创建一个超级类呢?
在那里设置您需要的所有属性,然后使您创建的每个新视图都继承自该超类。
假设您创建了一个名为“PreDesignedUIview”的 UIView,其中包含您的设计(如背景颜色等),

那么每当您创建新视图时,您都应该进行设置:

@interface NewView : PreDesignedUIview

这会自动将您的设计从 PreDesignedUIview 设置为新视图。

这有什么问题吗?

Why don't you create a Super class for all of your views?
set all the properties you need there and then make every new view that you create inherit from this super class.
Lets say that you create a UIView called "PreDesignedUIview" that has your design inside like background color etc.

then whenever you create a new view you should set:

@interface NewView : PreDesignedUIview

this will automatically set your design from PreDesignedUIview to the new view.

What is wrong with that ?

残龙傲雪 2024-12-16 03:30:20

创建一个存储背景颜色和图像的实用程序类。然后使用这些方法来获取图像/颜色。当您应该更改时,不要为每个文件调用不同的方法,而是更改从 Utility 类中的方法返回的颜色。

Create a Utility class that stores your background colors and images. Then use these methods to get the images/colors. When you are supposed to change, don't go and call different method fro each file, instead change the color that was being returned from the method in Utility class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文