繁体   English   中英

我应该如何在iOS 7中使用iOS 6风格的UIButtons?

[英]How should I use UIButtons with the iOS 6 style in iOS 7?

我正在制作专为iOS 6和7设计的应用程序,我希望允许用户选择他们想要的样式:iOS 6或iOS 7.或者至少让它完全具有iOS 6风格。 该应用程序需要在App Store上可以接受。

我正在考虑尝试使用iOS 6按钮图像,但由于我是iOS GUI编程的新手,我想知道是否有更清洁的方法来做我不知道的事情。 是否有一个我可以简单添加的框架,以便我可以使用“[[UIButton6 alloc] init]”之类的东西来制作具有较旧风格的按钮? 或者我可以通过渲染设置轻松完成此操作吗?

任何其他方法也会有所帮助。 此外,答案说这根本不可能是好的,但请不要回答告诉我,我应该只使用iOS 7 GUI。 我问“怎么/能”我这样做,而不是“应该”我这样做。

我所做的是添加一个带有渐变背景的椭圆形图画,我自己。 例如,这是我的一个应用程序的代码:

    CAGradientLayer* grad = [CAGradientLayer new];
    grad.frame = CGRectMake(0,0,15,15);
    grad.colors = @[(id)[UIColor colorWithRed:1 green:1 blue:0 alpha:0.8].CGColor,
                    (id)[UIColor colorWithRed:.7 green:.7 blue:.3 alpha:0.8].CGColor];
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(15,15), NO, 0);
    UIBezierPath* p = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0,0,15,15) cornerRadius:8];
    [p addClip];
    [grad renderInContext:UIGraphicsGetCurrentContext()];
    [[UIColor blackColor] setStroke];
    p.lineWidth = 2;
    [p stroke];
    UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    im = [im resizableImageWithCapInsets:UIEdgeInsetsMake(7,7,7,7) resizingMode:UIImageResizingModeStretch];

现在使用im作为按钮的背景图像。

该代码只是一个“服务建议”; 尝试它,然后改变渐变颜色或摆脱渐变或任何你想做的事情。

RED FLAG:如果你想在App Store上被接受,那么故意针对iOS 6的外观是一个严重的危险。 截至2月1日, Apple预计所有应用程序都将“针对iOS 7进行优化” ,这并未立即排除您正在讨论的内容,但我不会冒个人风险。

马特的答案很好,但我找到了一种方法,可以在不渲染图像的情况下做到这一点。 可能会更快,代码更紧凑。 当渐变有3个停止时,我也喜欢它好多了:

CAGradientLayer* grad = [CAGradientLayer new]; 
grad.frame = CGRectMake(0,0,button.frame.size.width,button.frame.size.height); 
grad.colors = @[(id)[UIColor colorWithWhite:1 alpha:1].CGColor,(id)[UIColor colorWithWhite:.95 alpha:1].CGColor,(id)[UIColor colorWithWhite:1 alpha:1].CGColor]; 
grad.locations  = @[@(0), @(.5), @(1)]; 
grad.cornerRadius = 10; 
grad.borderColor = [UIColor blackColor].CGColor; 
grad.borderWidth = .2; 
[button.layer insertSublayer: grad atIndex:0]; //button is the UIButton you want to modify

当然,根据需要编辑渐变,边框等。 这是它的样子:

这是中间颜色设置为95%白色的样子。

PS如果有人“忍者”我,我最初在这篇文章中说,亚特的答案不允许你设置渐变停止,但我错了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM