【问题标题】:Re-create UISwitch重新创建 UISwitch
【发布时间】:2011-08-26 22:06:01
【问题描述】:

我的客户不喜欢 iOS 5 UISwitch 上的光泽,并希望我使用一些图像创建一个非光泽版本。但是我不知道我会如何解决这个问题。

我创建了一个 UIView 子类,但我不知道下一步该做什么。

对我接下来需要做什么有什么建议吗?

【问题讨论】:

    标签: iphone objective-c ios subclass uiswitch


    【解决方案1】:

    您可以使用 CoreGraphics(不使用图像)重新创建 UISwitch

    看看这个:DCRoundSwitch

    DCRoundSwitch 旨在替代UISwitch

    无论如何你都应该创建一个UIControl 子类!

    【讨论】:

    • DCRoundSwitch 很好,我在一个项目中使用过它,但我认为它并不是 UISwitch 的直接替代品——它缺少任何类型的 InterfaceBuilder 集成。
    【解决方案2】:

    有很多方法可以做你想做的事。一种方法是使用 UIImageView 并在用户点击控件时切换图像。

    类似:

    -(void) loadView
    {
      [super loadView];
    
      UIImageView *image1 = [UIImage imageNamed:@"image1-from-client"];
      UIImageView *imageView = [[[UIImageView alloc] initWithImage:image1] autorelease];
      imageView.userInteractionEnabled = YES;
      [self.view addSubview:imageView];
    
      // detect the tap
      UITapGestureRecognizer *tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)] autorelease];
      [imageView addGestureRecognizer:tapRecognizer];
    }
    
    // this gets called when the user taps
    -(void) tap:(UIGestureRecognizer*)gesture
    {
      UIImageView *viewTapped = (UIImageView*)gesture.view;
      if ( viewTapped.tag == 0 )
      {
         viewTapped.tag = 1;
         viewTapped.image = [UIImage imageNamed:@"image2-from-client"];
      }
      else
      {
         viewTapped.tag = 0;
         viewTapped.image = [UIImage imageNamed:@"image1-from-client"];
      }
    }
    

    【讨论】:

      【解决方案3】:

      您可以通过继承 UIControl 来重新创建自定义 UISwitch。然后,您可以使用常规 UIView 来创建几乎任何您想要的效果。你可以看看SevenSwitch。我创建的自定义 UISwitch 替换。它是无光泽的,颜色可以根据您的喜好定制。

      https://github.com/bvogelzang/SevenSwitch

      【讨论】:

      • @TMin 该人发布了相同的答案 - 他们已被删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 2011-01-09
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      相关资源
      最近更新 更多