ios - C4 步进器自定义图像

标签 ios c4

我正在尝试在 C4Stepper 上使用我自己的图像。我是这样设置的

@implementation C4WorkSpace{
    C4Stepper *theStepper;
    C4Image *stepperBackground;
    C4Image *stepperPlus;
}

-(void)setup {
    //load backgroundimage
    stepperBackground=[C4Image imageNamed:@"icon_zoom.png"];
    stepperBackground.width=100;

    //load incrementImage
    stepperPlus=[C4Image imageNamed:@"icon_zoom_plus.png"];
    stepperPlus.width=stepperBackground.width/2;

    //setup stepper
    theStepper=[C4Stepper stepper];
    [theStepper setBackgroundImage:stepperBackground forState:NORMAL];
    [theStepper setIncrementImage:stepperPlus forState:NORMAL];

    theStepper.center=self.canvas.center;
    [self.canvas addSubview:theStepper];  
}

这 2 个图标如下所示:icon_zoom_Plus.png icon_zoom.png 奇怪的是, Canvas 上出现的内容看起来像这样: screenshot zoomStepperImages 有什么特殊要求吗?一定尺寸还是什么?

最佳答案

有特殊要求。

  • 使用的背景图像是“可拉伸(stretch)的”,因此您必须设计一个可以在需要时拉伸(stretch)的按钮图像。如果您查看任何按钮图像(包括 Media.xcassets 文件夹中的图像),您会发现它们是通用的。例如,选定的按钮背景图像如下所示:

enter image description here

  • 同样,增量/减量图像本身独立于背景图像。包含在同一文件夹中的 incrementNormal 图像如下所示:

enter image description here

  • 您可以看到 C4Stepper 类的默认值是如何在 C4AppDelegate.m 中初始化的:

...

[C4Stepper defaultStyle].style = basicStyle;
[C4Stepper defaultStyle].tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"lightGrayPattern"]];
[[C4Stepper defaultStyle] setDecrementImage:[C4Image imageNamed:@"decrementDisabled"] forState:DISABLED];
[[C4Stepper defaultStyle] setDecrementImage:[C4Image imageNamed:@"decrementNormal"] forState:NORMAL];
[[C4Stepper defaultStyle] setIncrementImage:[C4Image imageNamed:@"incrementDisabled"] forState:DISABLED];
[[C4Stepper defaultStyle] setIncrementImage:[C4Image imageNamed:@"incrementNormal"] forState:NORMAL];
  • 因此,您要做的是为您的背景创建一个图像(我的图像是可拉伸(stretch)的,因为中间的东西是直线,可以水平拉伸(stretch)而不看起来被拉伸(stretch)。您还想创建独立的 + - 图像以用于增量/减少按钮的边。

请注意,当我创建 C4Button 类时,我不得不尝试我创建的各种图像以使它们“看起来”正确......最后,我必须做很多调整和试验才能了解它们是如何渲染的。我在解决这个问题时遇到的困难是 UIButton 本身的渲染机制有点奇怪,我必须学习如何将东西放入按钮中以便它们正确渲染。

关于ios - C4 步进器自定义图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657982/

相关文章:

iphone - 当系统改变屏幕亮度时,iOS 会发送通知吗?

ios - 混合 Objective-C/Swift 框架的模块映射位置和编译器设置

panning - C4:给 "self"以外的对象添加平移

ios - 如何从 Canvas 获取 CAEmitterLayer

ios - 设置/启动/调整C4Sample的循环段

ios - 追加和预追加\n 到 NSMutableString

ios - swift/iOS - 键盘高度值在通知之间发生变化,但实际高度保持不变

ios - 如何获取 UITextView 中当前位置的行首

ios5 - C4 中的动画蒙版