Что было бы лучшим способом в iOS добиться рисования сетки из кругов с фиксированными столбцами и строками? Я хотел бы идентифицировать каждый круг, когда пользователь нажимает на него. Я попытался использовать представления коллекции, но кажется, что CoreGraphics предназначен для таких задач. Рисование сетки кругов
2
A
ответ
2
Вы можете создавать кнопки динамически следующим образом:
- (void)drawSheet
{
int numberOfRow=5;
int numberOfColumn=4;
float x = 1,
y = 20,
padding = 5,
width = (self.view.frame.size.width-(padding*(numberOfColumn-1)))/numberOfColumn,
height = (self.view.frame.size.height-(padding*(numberOfRow-1)))/numberOfRow;
int counter = 0;
for (int i=0; i<numberOfRow; i++) {
for (int j=0; j<numberOfColumn; j++) {
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(x, y, 74, 74)];
btn.layer.cornerRadius = btn.frame.size.width/2;
btn.layer.borderColor = [UIColor grayColor].CGColor;
btn.layer.borderWidth = 2.0;
[btn addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];
btn.clipsToBounds = YES;
btn.tag = counter;
[self.view addSubview:btn];
x = x + width + padding;
counter = counter + 1;
}
x = 0;
y = y + height + padding;
}
}
При нажатии на нее, вы получите тег этого:
- (IBAction)buttonPress:(UIButton *)sender{
NSLog(@"%ld",sender.tag);
}
+0
Большое спасибо – Jani
+0
@Jani Добро пожаловать в любое время :) –
1
привет Пожалуйста, проверьте приведенный ниже код. Я добавил 3 круга подряд, вы можете использовать больше, если хотите.
- (void)viewDidLoad {
[super viewDidLoad];
UIView *circleView;
int x = 10;
int y = 20;
static int tagNum = 0;
for (int row=0; row < 5;) {
for (int cirNum =0 ; cirNum <3;) {
circleView = [[UIView alloc] initWithFrame:CGRectMake(x,y,100,100)];
circleView.alpha = 0.5;
circleView.layer.cornerRadius = 50;
circleView.backgroundColor = [UIColor blueColor];
circleView.tag = tagNum;
NSLog(@"tagNum is %d", tagNum);
[self.view addSubview:circleView];
cirNum ++;
x = x + 100;
tagNum ++;
//y = y + 20;
}
row++;
y = y + 100;
x = 10;
}
// Do any additional setup after loading the view, typically from a nib.
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint location = [[touches anyObject] locationInView:self.view];
CGRect fingerRect = CGRectMake(location.x-5, location.y-5, 10, 10);
for(UIView *view in self.view.subviews){
CGRect subviewFrame = view.frame;
if(CGRectIntersectsRect(fingerRect, subviewFrame)){
//we found the finally touched view
//NSLog(@"Yeah !, i found it %@",view);
NSLog(@"view tag touched is %ld",view.tag);
}
}
}
выход будет выглядеть следующим образом
Смежные вопросы
- 1. Рисование сетки кругов в xcode/swift
- 2. iOS Рисование кругов
- 3. Рисование кругов в JFrame
- 4. Рисование кругов в Java
- 5. Рисование случайных кругов
- 6. Рисование кругов в 3D
- 7. Рисование нескольких кругов Android
- 8. Рисование конкретных кругов с Qt
- 9. Рисование кругов с использованием CGContext
- 10. HTML canvas: рисование выделенных кругов
- 11. Рисование сетки точек
- 12. Рисование прямоугольника и сетки
- 13. Рисование Сетки с Трансформацией
- 14. Рубиновые туфли - Рисование сетки
- 15. Рисование сетки в JFrame
- 16. Рисование сетки в java
- 17. LibGDX рисование кругов масштабах как-то
- 18. Рисование кругов вокруг текстуры с использованием libgdx
- 19. рисование двух кругов с использованием Quartz CGContextFillEllipseInRect
- 20. Рисование кругов внутри пирога - диаграмма d3
- 21. Рисование кругов на сетке 2D-массива (JAVA)
- 22. Рисование кругов по диагональной линии в C++
- 23. Рисование кругов вокруг определенной области с opencv
- 24. Рисование гладких кругов с использованием Core Graphics
- 25. Рисование нескольких кругов в одной строке CGGraphicsContext
- 26. Рисование Концентрических кругов, появляющихся по одному, Java
- 27. Рисование линий и кругов в WPF
- 28. Рисование кругов с использованием цикла 'for'
- 29. Рисование кругов на торе в matlab
- 30. Рисование кругов вокруг точек в участке
Объектив-c или скорость? –
object-c please – Jani
Создавайте круглые кнопки программно и присваивайте им «тег», чтобы определить, когда вы нажимаете на него. – VRAwesome