UIButton внутри UIView, с Showstouch, когда подсвеченное свечение обрезается superview

#uiview #uibutton #highlight #glow #clipped

#uiview #uibutton #выделить #свечение #обрезанный

Вопрос:

возможно, подход, который я использую с этим, может быть немного неправильным, и если это так, возможно, кто-нибудь может посоветовать… но в любом случае, шаблон, который я использовал для создания виджетов-респондентов, включает добавление невидимого UIButtonTypeCustom, который заполняет границы UIView, чтобы добавить обратно совместимое поведение кнопки к любому представлению. для моих нужд это работает отлично. чтобы немного улучшить пользовательский опыт использования этой гибридной кнопки, я установил для кнопки Showstouch, когда подсветка подсвечивается, значение YES. это работает нормально, но «свечение» кнопки обрезается родительским UIView кнопки. я пытался;

 button.layer.masksToBounds = NO;
button.clipsToBounds = NO;
parentView.layer.masksToBounds = NO;
parentView.clipsToBounds = NO;
  

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

надеюсь, кто-нибудь может помочь! Спасибо

Ответ №1:

Я использую код, подобный этому, и свечение не обрезается родительским — проверено и протестировано.

 UIButton myButton = [[UIButton alloc] init....];
[parentView addSubview:myButton];
myButton.showsTouchWhenHighlighted = YES;
parentView.clipsToBounds = NO;
  

Нет необходимости устанавливать .clipsToBounds = NO на кнопке; по умолчанию уже НЕТ.

Вы проверили, что parentView значение не равно нулю при настройке свойств? Проверьте также, что UIView дальше в иерархии нет другого, который мог бы обрезать эффект свечения.