Если вы боретесь из-за закругленных corners
против subviews
против masksToBounds
, попробуйте использовать мою функцию:
- (UIView*)putView:(UIView*)view insideShadowWithColor:(UIColor*)color andRadius:(CGFloat)shadowRadius andOffset:(CGSize)shadowOffset andOpacity:(CGFloat)shadowOpacity
{
CGRect shadowFrame; // Modify this if needed
shadowFrame.size.width = 0.f;
shadowFrame.size.height = 0.f;
shadowFrame.origin.x = 0.f;
shadowFrame.origin.y = 0.f;
UIView * shadow = [[UIView alloc] initWithFrame:shadowFrame];
shadow.userInteractionEnabled = NO; // Modify this if needed
shadow.layer.shadowColor = color.CGColor;
shadow.layer.shadowOffset = shadowOffset;
shadow.layer.shadowRadius = shadowRadius;
shadow.layer.masksToBounds = NO;
shadow.clipsToBounds = NO;
shadow.layer.shadowOpacity = shadowOpacity;
[view.superview insertSubview:shadow belowSubview:view];
[shadow addSubview:view];
return shadow;
}
вызывают это на вашем представлении. будет ли ваш взгляд иметь закругленные углы, независимо от его размера, его форма - будет нарисована хорошая тень.
Просто сохраните возвращаемое значение функции, чтобы вы могли ссылаться на нее, когда вы хотите удалить таблицу (или, например, использовать insertSubview:aboveView:
)
Я бы использовал обходной путь.
соответствуют всем <% & %>
и заменяют его специальным символом (в моем случае _
подчеркивание), так что результат будет <% _ %>
&
char
и, наконец, заменяем специальный символ _
на &
[117 ]
const mySplit = (mystr) => {
const regex = /<%(?!%>).*%>/gm;
const matches = mystr.match(regex);
const tmpreplace = matches.map(e => e.replace(/&/g,'_'));
matches.forEach(e => mystr = mystr.replace(e,tmpreplace));
return mystr.split('&').map(e => e.replace(/_/g,'&'));
}
console.log(mySplit('my&string=21<%253&124%> <&> &&'));
console.log(mySplit('new<%<&%235<%test&gg%>&test&f'));
console.log(mySplit('a&<%&qwer&>ty%>&af'));