我有40张图片代表iOS应用程序的屏幕模型。我将每个全屏显示为UIImageView
。我想通过每个屏幕上的按钮支持1-40的导航。我将在我想要支持此导航的位置添加透明UIButton
。每个屏幕上的按钮不在同一位置。
我唯一的选择就是在需要这些按钮的地方创建40个笔尖并手工绘制?我在这里错过了基础课的机会吗?我的图像是可预测命名的,因此我计划在基类中使用简单的导航方法。
答案 0 :(得分:1)
我会做这样的事情:拥有一个UIImageView和一个视图控制器。视图控制器有一个NSArray,比如buttonsOnPage
。在数组内部,您将存储更多存储按钮的NSArrays。这些按钮都指向相同的操作,例如buttonPressed:
。请记住,您可以指定tag
,您可以使用这些来确定要去哪个“页面”。由于加载你的图像似乎是直截了当的我在这里跳过它。
这是一个小伪代码:
- (void)initButtons
{
NSMutableArray *page;
UIButton *button;
buttonsOnPage = [[NSMutableArray alloc] init];
// Page 0
page = [NSMutableArray array];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonPressed:) forControlEvent:UIEventTouchUpInside];
[button setTag:5]; // When pressed, go to page 5.
[button setFrame:...];
[page addObject:button];
...
[buttonsOnPage addObject:page];
...
}
- (void)setUpPage:(NSUInteger)page
{
// Remove all previous buttons
for (UIView *view in [myImageView subviews]) {
[view removeFromSuperview];
}
for (UIButton *button in [buttonsOnPage objectAtIndex:page]) {
[myImageView addSubview:button];
}
// Also set the correct image.
}
- (void)buttonPressed:(id)sender
{
[self setUpPage:[(UIView *)sender tag]];
}
您可以通过定义宏来轻松/快速地设置按钮设置方法:
#define NEW_BUTTON(page, x, y, width, height) \
do {
button = [UIButton buttonWithType:UIButtonTypeCustom]; \
[button addTarget:self action:@selector(buttonPressed:) forControlEvent:UIEventTouchUpInside];\
[button setTag:page]; \
[button setFrame:CGRectMake(x, y, width, height)]; \
[page addObject:button];
} while (0);
然后做得很快:
// Page 0
page = [NSMutableArray array];
NEW_BUTTON(1, 10, 20, 20, 20);
NEW_BUTTON(2, 10, 60, 20, 20);
[buttonsOnPage addObject:page];
// Page 1
page = [NSMutableArray array];
NEW_BUTTON(3, 70, 20, 20, 20);
NEW_BUTTON(4, 10, 160, 20, 20);
[buttonsOnPage addObject:page];
...