2013-06-13 1 views
1

Я хочу создать полностью прозрачный оверлей UIView (и он имеет subviews), чтобы получать штрихи. Я мог бы настроить альфа на низкое значение (например, 0,02), чтобы получить приблизительный эффект.Могу ли я создать полностью прозрачный UIView, который получает штрихи?

Но мне интересно, может ли UIView получать штрихи через другие конфигурации UIView?

+1

Почему вы не используете UIButton с костюмом ...? –

+0

@NitinGohel Я этого не знал. Не уверен, соответствует ли она моей проблеме. – smilingpoplar

+0

Посмотрите, хотите ли вы, чтобы вы коснулись события вашего Uivew, а затем его битовый код для него с помощью события, жестов и т. Д., Но с помощью кнопки u вы можете получить доступ к ее IBAction и получить событие click также, и если стиль кнопки custome, то не нужно также устанавливать альфа. . Простое использование UIView. –

ответ

4

Вы можете сделать это путем переопределения метода hitTest:withEvent: в классе вашего полностью прозрачный взгляд, как:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    return self; 
} 

Реализация hitTest:withEvent: не должно быть так просто, конечно. Дело в том, что вы можете заставить даже полностью прозрачный вид быть осязаемым, пока что-то возвращает этот вид с hitTest:withEvent:.

Обратите внимание, однако, что прикручивание с помощью hitTest:withEvent: - это простой способ создать некоторые очень странные ошибки. Используйте этот метод с осторожностью.

+0

спасибо, позвольте мне попробовать – smilingpoplar

+0

отлично, переопределяя 'hitTest: withEvent:' работает! – smilingpoplar

+0

Да, возиться с этим методом может быть рискованным. Как насчет перезаписи 'drawRect:'? Переписывание, которое очень хорошо документировано. Он мог бы, контролируемый каким-то специальным флагом, либо просто вызвать '[super drawRect: ...];' иметь регулярное представление со всеми его свойствами и т. Д. Или просто ничего не делать в невидимом-но- которое будет создавать @smilingpoplar. –

3

Лучший способ сделать это, чтобы установить цвет фона:

UIView *view = ...; 
view.backgroundColor = [UIColor clearColor]; 

Добавить в UITapGestureRecognizer к этому подключить селектор, чтобы реагировать на нажатия.

+0

Но UIView имеет некоторые подзаголовки. Установка backgroundColor не может скрыть эти подпункты. – smilingpoplar