OK. Я выполнил поиск Google, поиск в стеке, поиск Wenderlich (это еще что-нибудь?). Я пробовал все здесь при переполнении, и ничего не работает.CAShapeLayer с UIRectCornerBottomLeft/Right делает мой взгляд пропавшим
Мне нужен эксперт CALayer.
У меня есть tableView, который я показываю как раскрывающийся список из верхней части моего приложения. Он показывает тонкий и денди, пока я не попытаюсь обогнуть нижние левые/правые углы. Каждая попытка, которую я пыталась сделать, привела к тому, что моя таблица полностью исчезла. Способы по-прежнему срабатывают, и я получаю доработки для методов вверх/вниз. Однако таблица просто исчезает.
Код с Tableview:
- (void)setupTopMenu {
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
self.topMenuTable = [[UITableView alloc] initWithFrame:CGRectMake((screenWidth/2) - ((screenWidth - topMenuSideBuffer)/2), self.view.frame.origin.y + topBuffer, (screenWidth - topMenuSideBuffer), 0) style:UITableViewStylePlain];
self.topMenuTable.backgroundColor = DARK_BLUE_NAVBAR_COLOR;
self.topMenuTable.dataSource = self;
self.topMenuTable.delegate = self;
self.topMenuTable.scrollEnabled = YES;
self.topMenuTable.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
self.topMenuTable.separatorColor = [UIColor blackColor];
self.topMenuTable.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
self.topMenuTable.layer.borderColor = [UIColor blackColor].CGColor;
self.topMenuTable.layer.borderWidth = 0.4f;
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.topMenuTable.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(5.0, 5.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path = maskPath.CGPath;
self.topMenuTable.layer.mask = maskLayer;
[self.view addSubview:self.topMenuTable];
}
код только с точки зрения (я подумал, что это было что-то делать с Tableview, но он ведет себя так же, когда я использую регулярные UIView)
- (void)setupTopMenu {
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
self.topMenuView = [[UIView alloc] initWithFrame:CGRectMake((screenWidth/2) - ((screenWidth - topMenuSideBuffer)/2), self.view.frame.origin.y + topBuffer, (screenWidth - topMenuSideBuffer), 0)];
self.topMenuView.backgroundColor = [UIColor redColor];
self.topMenuView.layer.borderColor = [UIColor blackColor].CGColor;
self.topMenuView.layer.borderWidth = 0.4f;
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.topMenuView.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(5.0, 5.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path = maskPath.CGPath;
self.topMenuView.layer.mask = maskLayer;
[self.view addSubview:self.topMenuView];
}
код, я использую, чтобы показать вид (ы):
- (void)showTopMenu {
if (!isTopMenuDown) {
[UIView animateWithDuration:0.45 animations:^ {
//self.topMenuTable.frame = CGRectMake((self.screenWidth/2) - (self.topMenuWidth/2), self.view.bounds.origin.y + topBuffer, self.topMenuWidth, self.topMenuHeight);
self.topMenuView.frame = CGRectMake((self.screenWidth/2) - (self.topMenuWidth/2), self.view.bounds.origin.y + topBuffer, self.topMenuWidth, self.topMenuHeight);
} completion:^(BOOL finished) {
}];
} else {
[UIView animateWithDuration:0.35 animations:^ {
// self.topMenuTable.frame = CGRectMake((self.screenWidth/2) - (self.topMenuWidth /2), self.view.bounds.origin.y + topBuffer, self.topMenuWidth, 0);
self.topMenuView.frame = CGRectMake((self.screenWidth/2) - (self.topMenuWidth /2), self.view.bounds.origin.y + topBuffer, self.topMenuWidth, 0);
} completion:^ (BOOL finished) {
}];
}
isTopMenuDown =! isTopMenuDown;
}
ПРИМЕЧАНИЕ: Я также пробовал идею O f добавление маски к слою, как в Round some corners of UIView and round the view’s layer’s border too
Тот же результат.
Если я вырву код Layer, изображения будут отображаться отлично, но с помощью кода слоя они исчезнут.
Есть ли что-то о том, как я показываю представление, которое я не вижу, что заставляет его исчезнуть?
Спасибо за помощь.
Ой и спасибо. – addzo