2014-10-02 4 views
1

У меня есть mainView, где я рисую, можно сказать, что изображение в фоновом режиме. mainView также имеют 3 subviews, которые можно перетаскивать друг на друга. subviews - квадраты с фоном clearColor и redColor рамка. Проблема в том, что если одно представление перетаскивается во второе представление, я вижу второе представление «ниже» 1-го представления. Я хотел бы удалить его (только часть, которая перекрывается), но понятия не имеет, как это сделать. Я представляю его на скриншоте ниже.Стереть часть подвью

Слева есть текущая ситуация, справа - желаемая. Можно ли стереть часть подсмотра ..? image

ответ

0

Очень пользовательские эффекты, как это иногда легче сделать в -drawRect метод одной точки зрения, потому что в противном случае граничила прямоугольник, который частично стерта потребности знать о других целях. Нарисуйте нижнюю границу прямоугольника, затем сотрите верхний прямоугольник, затем нарисуйте верхнюю границу прямоугольника. Вы также можете использовать несколько CGLayers с смешением для достижения аналогичного эффекта с немного большей абстракцией.

+0

Я упростил всю идею, в действительности эти подсмотры довольно сложны, все рисуется в 'drawRect'. Я не хотел бы объединять его с одним взглядом, потому что он будет очень грязным. Вот почему я прошу об удалении subview. Тем не менее, спасибо за ответ. – Vive

+0

Ваши взгляды могли бы узнать о каждом другом, а затем использовать drawRect, чтобы стереть область зрения друг над другом, перевести ее в локальные координаты. –

0

Если у вас четкий цветной фон, это прозрачно, и именно поэтому ваши взгляды заглядывают. Измените его на [UIColor whiteColor].

+0

Но я написал в вопросе, что мой фон имеет градиент. Я не хочу никакого белого наложения или никакого альфа-значения над ним. С такой идеей я предпочел бы, чтобы subviews заглядывали, чем белые. Это не решение, но обход его без исправления. – Vive