Получить динамические координаты созданного подпредставления ios

Я создал метод, который создает подпредставление на основе входного размера, чтобы не было заданных значений угла CGRect по умолчанию. Я хочу создать кнопку отклонения, которая будет расположена в верхнем левом углу каждого подпредставления. В настоящее время я использую этот метод, чтобы добавить его, но проблема в том, что значения для CGRectMake не могут быть статическими.

CGRect tapToDismissFrame = CGRectMake(50.0f, 50.0f, 400.0f, 400.0f);

UIButton *tapToDismiss = [[UIButton alloc] initWithFrame:tapToDismissFrame];
tapToDismiss.backgroundColor = [UIColor clearColor];
tapToDismiss.titleLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"Helvetica-Bold"] size:20];
[tapToDismiss setTitle:@"⊗" forState:UIControlStateNormal];
[tapToDismiss setTitleColor:[UIColor colorWithRed:173.0/255.0 green:36.0/255.0  blue:36.0/255.0  alpha:1.0] forState:UIControlStateNormal];
[tapToDismiss addTarget:self action:@selector(tapToDismissClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.maskView addSubview:tapToDismiss];

Как я могу получить динамические значения, чтобы создать его в верхнем левом или правом углу.

1 ответ

Вы должны использовать функции CGGeometry, чтобы вычислить правильный кадр для вашей кнопки отклонения. Предположим, вы создали эту кнопку. После этой точки вот пример кода:

[button sizeToFit];
CGRect maskViewBounds = self.maskView.bounds;
CGFloat top = CGRectGetMinY(maskViewBounds);
CGRect left = CGRectGetMaxX(maskViewBounds);
CGFloat buttonHeight = button.size.height;
CGFloat buttonWidth = button.size.width;
CGFloat topMargin = 5.0f;
CGFloat leftMargin = 5.0f;
CGPoint buttonCenter = CGPointMake(top + buttonHeight / 2.0 + topMargin, left - buttonWidth / 2.0 - leftMargin);
button.center = buttonCenter;

Примечание: я не писал этот код в Xcode. Так что могут быть ошибки типа.

Другие вопросы по тегам