uibutton 未显示

Posted

技术标签:

【中文标题】uibutton 未显示【英文标题】:uibutton is not getting displayed 【发布时间】:2012-05-28 05:30:34 【问题描述】:

我正在尝试在 imageview 中添加 uibutton。

但是没有显示按钮。

即使我尝试将其添加到 uiscrollview 和 self.view。

但是 uibutton 没有显示任何内容

请告诉我是什么问题

const CGFloat HEIGHT = 1024.0;
    const CGFloat WIDTH = 768.0;
    #define myViewPortrait CGRectMake(0.0f, 0.0f, 768.0f,1024.0f)
    #define myViewLandSacpe CGRectMake(0.0f, 0.0f, 1024.0f,768.0f)

    #define kAnimationKey @"animationKey"


    -(void)layoutScrollImages
    
      UIImageView *view = nil;
      NSArray *subviews = [myScrollView subviews];

      CGFloat curXLoc = 0;
      for (view in subviews)
      
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        
          CGRect frame = view.frame;
          frame.origin = CGPointMake(curXLoc, 0);
          view.frame = frame;

          curXLoc += (self.view.frame.size.width);
        
      

      [myScrollView setContentSize:CGSizeMake((myImagesCount * self.view.frame.size.width), [myScrollView bounds].size.height)];
       


    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad 

      self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
      myScrollView = [[UIScrollView alloc] initWithFrame:
      CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

      [self.view addSubview:myScrollView];

      UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
      rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
      rightRecognizer.numberOfTouchesRequired = 1;
      [rightRecognizer setDelegate:self];
      [myScrollView addGestureRecognizer:rightRecognizer];
      [rightRecognizer release];

      UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)];
      leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
      leftRecognizer.numberOfTouchesRequired = 1;
      [leftRecognizer setDelegate:self];
      [myScrollView addGestureRecognizer:leftRecognizer];
      [leftRecognizer release];

      [myScrollView setBackgroundColor:[UIColor blackColor]];
      [myScrollView setCanCancelContentTouches:NO];
      myScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
      myScrollView.clipsToBounds = YES;     
      myScrollView.scrollEnabled = YES;
      myScrollView.pagingEnabled = YES;
      myScrollView.delegate = self;
      myImagesCount = 5;
      myScrollView.showsHorizontalScrollIndicator=NO;
      myScrollView.showsVerticalScrollIndicator=NO;

      for (int i = 1; i <= myImagesCount; i++)
      
        NSString *imageName = [NSString stringWithFormat:@"screen-%d.jpg", i];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        CGRect rect = imageView.frame;
        rect.size.height = myScrollView.frame.size.height;
          NSLog(@"%d -----",self.view.frame.size.width);
        rect.size.width = myScrollView.frame.size.width;
        imageView.frame = rect;
        imageView.tag = i;
        [myScrollView addSubview:imageView];
        [imageView release];
      
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self action:@selector(buttonHandler) forControlEvents:UIControlEventAllEvents];
    [button setTitle:@"point" forState:UIControlStateNormal];
    button.frame = CGRectMake(0.0, 0.0, 100.0, 40.0);
    button.backgroundColor = [UIColor blackColor];
    [self.view addSubview:button];
      [self layoutScrollImages];

      [super viewDidLoad];

    

【问题讨论】:

【参考方案1】:

根据您的问题,您想将UIButton 作为子视图添加到UIImageView - 我猜是在for 循环中?我看到的直接问题是实际按钮是在 for 循环之外生成的。我认为你的 for 循环应该是这样的:

for (int i = 1; i <= myImagesCount; i++)

    NSString *imageName = [NSString stringWithFormat:@"screen-%d.jpg", i];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self action:@selector(buttonHandler)  forControlEvents:UIControlEventAllEvents];
    [button setTitle:@"point" forState:UIControlStateNormal];
    button.frame = CGRectMake(0.0, 0.0, 100.0, 40.0);
    button.backgroundColor = [UIColor blackColor];

    CGRect rect = imageView.frame;
    rect.size.height = myScrollView.frame.size.height;
    NSLog(@"%d -----",self.view.frame.size.width);
    rect.size.width = myScrollView.frame.size.width;
    imageView.frame = rect;
    imageView.tag = i;

    [imageView addSubview:button];
    [myScrollView addSubview:imageView];
    [imageView release];

【讨论】:

【参考方案2】:

试试这个

全局声明按钮并设置

[self layoutScrollImages];

[self.view bringSubViewToFront:button];

【讨论】:

以上是关于uibutton 未显示的主要内容,如果未能解决你的问题,请参考以下文章

uibarbutton 项目未显示 uibutton

UIButton 标签未显示

UIButton 突出显示的背景图像未显示

UIBarButtonItem 中的 UIButton 未显示

UIButton 的标题标签未显示

UIButton 的渐变未显示