2014-12-03 16 views
6

Trong chế độ chân dung (đầu tiên vẽ thời gian)xóa hoàn toàn UIBezierPath & CAShapeLayer mục vẽ

enter image description here

Sau khi quay đến cảnh quan, tại sao các hình dạng cũ:

enter image description here

Tôi đang sử dụng UIBezierPath & CAShapeLayer để vẽ hình tròn & đường trong lớp tùy chỉnh UIView. Vấn đề là cảm hứng khi có thể vẽ các vòng tròn mới & dòng thành công sau khi thiết bị được xoay, tôi không thể xóa các hình dạng được vẽ cũ hơn. Các hình dạng mới được vẽ sau khi xoay thiết bị hoàn hảo, tôi chỉ cần loại bỏ khỏi màn hình những hình dạng cũ hơn dính vào màn hình. Hình ảnh được đính kèm.

+0

Vui lòng bao gồm mã có liên quan (ví dụ: bạn làm gì khi xoay vòng). – Rob

Trả lời

9

Bạn có thể xóa CAShapeLayer trước đó (với removeFromSuperlayer) hoặc thay thế path của CAShapeLayer trước đó. Có vẻ như bạn đang thêm một lớp mới mà không xóa lớp cũ, nhưng tất nhiên không thể nói mà không có mã nguồn.

+0

cảm ơn đề xuất của bạn, nó đã đẩy tôi đến đúng hướng – ystack

3

aah! tìm thấy giải pháp sử dụng rootView.layer.sublayers = nil xóa tất cả các hình dạng trước đó

+4

Tôi rất vui khi kỹ thuật của bạn hoạt động, nhưng tôi vẫn dựa vào việc giữ các tham chiếu yếu của bạn với các lớp mà bạn đã thêm và sau đó gọi 'removeFromSuperlayer' trên chúng . Kỹ thuật này đặt 'sublayers' thành' nil' có vẻ hơi nặng nề với tôi. Plus Tôi đã nhìn thấy bài viết liên quan đến có vấn đề với kỹ thuật đó (có thể có một số biến thể phiên bản hệ điều hành trong hành vi của kỹ thuật này). Tuy nhiên, tôi rất vui vì bạn đã giải quyết được vấn đề của mình. – Rob

Các vấn đề liên quan