iOS UIButton 如何制作这样漂亮的按钮?

Posted

技术标签:

【中文标题】iOS UIButton 如何制作这样漂亮的按钮?【英文标题】:iOS UIButton how does one make beautiful buttons like this? 【发布时间】:2011-10-28 15:25:44 【问题描述】:

这是一个 UIButton 吗?如果是,背景红色是怎么做的?显然,它不是 红色 UIColor? Xcode 中是否包含相同的工具或实用程序来允许制作按钮 像这样?

【问题讨论】:

How do I programmatically provide a glossy look to UIButtons?的可能重复 【参考方案1】:

您可以使用私有类UIGlassButton 生成类似的按钮。 我首先在@schwa 的http://pastie.org/830884 看到它。

在您的 ios 模拟器中使用此代码运行应用以创建自定义按钮(或在设备中,保存到 $(APP)/Documents 并启用 iTunes 文件共享)。

Class theClass = NSClassFromString(@"UIGlassButton");
UIButton *theButton = [[[theClass alloc] initWithFrame:CGRectMake(10, 10, 120, 44)] autorelease];
// Customize the color
[theButton setValue:[UIColor colorWithHue:0.267 saturation:1.000 brightness:0.667 alpha:1.000] forKey:@"tintColor"];
//[theButton setTitle:@"Accept" forState:UIControlStateNormal];
[self.view addSubview:theButton];

UIGraphicsBeginImageContext(theButton.frame.size);
CGContextRef theContext = UIGraphicsGetCurrentContext();
[theButton.layer renderInContext:theContext];

UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *theData = UIImagePNGRepresentation(theImage);
[theData writeToFile:@"/Users/<# your user #>/Desktop/button.png" atomically:NO];
UIGraphicsEndImageContext();

获得 png 后,将其用作按钮背景。

或者,您也可以build the buttons programmatically(作者 Jeff Lamarche)。

【讨论】:

@geekyaleks - 请注意,使用这样的私有类可能会导致您的应用程序被 App Store 拒绝。使用其中一种编程解决方案为按钮添加光泽可能是更安全的选择。我不知道我听说过使用 UIGlassButton 的任何拒绝,但这并不意味着 Apple 将来不会拒绝它。此外,他们可能会在未来的操作系统更新中更改类名,您的按钮将不再正确。 @BradLarson 该类未在应用程序中使用,仅用于创建 PNG。 我们使用从他们的软件中获取的图像是否会打扰 Apple 评论者?我们在技术上自己渲染它们,但我们正在按照他们的规则行事。【参考方案2】:

我编写了几个类来为我编写的计算器生成按钮。这些类根据标准颜色或 RGB 输入 RGB 值生成按钮。这些按钮位于我在 Github 上的 BindleKit 项目中:https://github.com/bindle/BindleKit

我对@9​​87654322@ 的回答描述了如何使用这些类以及在哪里可以找到源代码。

要查看按钮示例,请在 Github 项目中编译 BKCatalog 应用程序或查看屏幕截图https://github.com/bindle/BindleKit/blob/master/screenshots/BKCatalog-BKButtons.png

【讨论】:

【参考方案3】:

您需要为按钮创建背景图片。

然后将图片添加到按钮中:

- (void)setImage:(UIImage *)image forState:(UIControlState)state

对于可调整大小的按钮,请参见:

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

您可以使用图形转换器、Photoshop 等程序。

【讨论】:

【参考方案4】:

在 iOS 5 下,你有 UIAppearance。

【讨论】:

【参考方案5】:

您可以使用核心动画层制作类似的按钮。

http://www.cimgf.com/2010/01/28/fun-with-uibuttons-and-core-animation-layers/

【讨论】:

我实际上已经在其他地方使用过这种技术,但它从来没有像我附上的图片那样好看。这是一个“玻璃般”的后端,具有很强的过渡效果。我希望 Xcode 有一个图形实用程序来制作这样的按钮。我想,我需要和图形艺术家谈谈。 投反对票,因为使用这些技术生成的按钮看起来没有问题中提供的示例那么好。 @mason 实际上他们制作的图片看起来和上面的一样好。我猜你不够熟练,无法正确使用它们,我为你感到抱歉。 @logancautrell 无意冒犯。但是愿意分享看起来一样好的例子吗?我只能通过提供的页面上显示的示例。它们产生的结果远不及标准的图形支持按钮,就像这个问题中的按钮一样。在第二个链接的情况下,示例显示渐变应用于文本顶部,这看起来很糟糕。如果有人能够使用第一个链接中的技术制作看起来一样好的按钮,我还没有看到它,我很乐意。创建基于图形的按钮可以节省我数小时的时间。

以上是关于iOS UIButton 如何制作这样漂亮的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

IOS。如何在 UIButton 上绘制复杂的图像?

如何根据iOS中superview的大小制作UIButton网格?

iOS 如何让 UISlider 和 UIButton 像 Apple 的 Music 应用一样?

如何制作像 Facebook ios app 或 tumblr app 这样的漂亮 Tableview? [关闭]

例如,如何制作用于录制音频的保持按钮? (斯威夫特)[关闭]

如何制作带有浮雕背景图像的 UIButton?