我有一个菜单栏作为uiimage。我想在这个菜单栏上制作5个菜单是可点击的并链接到另一个视图。谁能告诉我我能做到的方式?我发现人们在uiimage上使用uibutton,对我来说这很好,我怎样才能将菜单栏分成5块。
感谢rmaddy和Brent Royal-Gordon
我决定使用uiimage作为菜单栏背景并在其上添加uibutton。我尝试这样的事情:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"MOVIE" ofType:@"MP4"]];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.repeatMode = MPMovieRepeatModeOne;
moviePlayer.shouldAutoplay = YES;
moviePlayer.scalingMode = MPMovieScalingModeFill;
[moviePlayer.view setFrame:CGRectMake(0,0,1330,320)];
[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setContentSize:CGSizeMake(1330,320)];
[scrollView setScrollEnabled: YES];
[scrollView setShowsHorizontalScrollIndicator:NO];
[scrollView setShowsVerticalScrollIndicator:NO];
[scrollView addSubview:moviePlayer.view];
[self.view addSubview:scrollView];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:image.frame];
UIImage *menubar = [UIImage imageNamed:@"BG.jpg"];
imageView = [[UIImageView alloc] initWithImage:menubar];
imageView.contentMode = UIViewContentModeScaleToFill;
imageView.frame = CGRectMake(0, 258, imageView.frame.size.width, 25);
[self.view addSubview:imageView];
[imageView setUserInteractionEnabled:YES];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(0,258,30,25)];
[btn addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:@"HOME" forState:UIControlStateNormal];
[imageView addSubview:btn];
但是当我在模拟器上运行时,按钮在屏幕上不可见。我做错了什么?
答案 0 :(得分:4)
使用手势识别器是一个坏主意,因为:
您应该做的是在Photoshop等图形工具中将单个图像拆分为五个,并将每个切片设为image
的{{1}}。你需要为这些图像设计突出显示的状态(当其中一个被按下时显示),但你应该这样做。
如果必须在代码中对图像进行切片,则可以使用UIButton
并使用UIGraphicsBeginImageContextWithOptions(size, NO, 0.0)
使用适当的偏移量绘制大图像来获取切片想要,但99.99999%的时间,将你的应用程序运行在一个小巧,缓慢,电池供电的iOS设备上,在你的大而强劲的墙上插座驱动的Mac上切割图像会更有意义。
答案 1 :(得分:2)
使用包含图片的UITapGestureRecognizer
的{{1}}。您需要在图片视图中将UIImageView
属性设置为userInteractionEnabled
。
当您收到点击事件时,请查看视图中点击的位置。根据位置,执行五个菜单操作之一。
如果您想要更多控制权,最好将图像拆分为5并改为创建5个YES
实例。
答案 2 :(得分:0)
为什么要将按钮添加到图像视图?只需将其添加到视图中即可。它将解决问题(据我所知)。
[imageView addSubview:btn];
试试这个
[self.view addSubview:btn];
希望这有帮助
答案 3 :(得分:0)
问题在于按钮的宽度。尝试
这个
[btn setFrame:CGRectMake(0,258,100,50)]
(将宽度增加到100)
如果背景为白色,则可能需要更改标题颜色
[btn setTitleColor:[UIColor blackColor] forState: UIControlStateNormal];
答案 4 :(得分:0)
您可以先添加按钮视图,然后在按钮上添加imageview,请参阅下面的代码:
//添加第一个按钮
UIButton * btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
btnImage.frame = CGRectMake(0, 4, 60, 56);
btnImage.backgroundColor = [UIColor colorWithRed:231.0f/255.0f green:232.0f/255.0f blue:234.0f/255.0f alpha:1.0];
btnImage.layer.borderColor = [UIColor colorWithRed:183.0f/255.0f green:184.0f/255.0f blue:186.0f/255.0f alpha:1.0].CGColor;
btnImage.layer.borderWidth = 1.0f;
// Add imageview on button
UIImageView *yourImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
[yourImageView setImage:[UIImage imageNamed:@"myimage.png"]];
yourImageView.center = CGPointMake(btnImage.frame.size.width/2, btnImage.frame.size.height/2);
[btnImage addSubview:yourImageView];
[self.view addSubview:btnImage];