Tôi nghĩ từ một số điểm về OS X và luôn đúng với iOS, nội dung đó có thể xuất hiện bên ngoài giới hạn của chế độ xem? (Ví UIView) Nhưng nếu tôi tạo ra một thương hiệu mới Độc Xem ứng dụng, và tạo ra một lớp MyView rằng lớp con UIView, và thực hiện drawRect của nó:Trên iOS, drawRect không thể vẽ ra ngoài giới hạn của khung nhìn?
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIBezierPath *path = [UIBezierPath bezierPathWithRect:
CGRectMake(-20, -20, 600, 600)];
[[UIColor greenColor] set];
[path fill];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextFillRect(context, CGRectMake(-20, -20, 600, 600));
}
tôi sử dụng cả hai giao diện người dùng và CG để vẽ một hình chữ nhật từng, chỉ trong trường hợp một công trình và người kia thì không. Và quan điểm được thêm vào trong viewDidAppear
:
- (void)viewDidAppear:(BOOL)animated {
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 260, 260)];
[self.view addSubview:myView];
}
Nhưng không có vấn đề gì, hộp màu sẽ không đi xa hơn khu vực (20, 20, 260, 260)
. Có đúng là chỉ các CALayer mới có thể được tự do thêm vào và xuất hiện bên ngoài giới hạn của khung nhìn? Có thể vì ngữ cảnh đồ họa bị giới hạn ở số (20, 20, 260, 260)
này để bắt đầu không? Nếu vậy, có cách nào để làm cho nội dung drawRect
xuất hiện bên ngoài giới hạn của chế độ xem không, trong tất cả bốn hướng trên cùng, xuống, trái, phải?
Tôi có thể hỏi, tại sao bạn muốn vẽ bên ngoài hình ảnh trực quan có thể nhìn thấy vì nó sẽ không hiển thị? Nếu bạn có kế hoạch làm cho nó có thể nhìn thấy sau này, bạn nên sử dụng một CALayer như bạn đã đề cập một cách chính xác. – Lefteris
một lý do là, tôi đang nghĩ đến việc triển khai PopoutScrollView có góc tròn hoặc thậm chí là "đám mây như các cạnh". Tôi thấy rằng tôi có thể phân lớp UIView và có một UIScrollView như là một tài sản, để scrollview là một subview của khung nhìn, và tôi thực sự phải ghi đè lên 'addSubview' để thêm vào' self.scrollView'. Điều này là bởi vì tôi không thể đơn giản vẽ các đường viền trên một scrollView, nếu không chúng sẽ cuộn đi. Điều này có thể phức tạp, và tôi nghĩ, tại sao không chỉ phân lớp UIScrollView, và trong drawRect, vẽ ra ngoài giới hạn? Sau đó, tôi không phải ghi đè quá nhiều phương pháp. –
Mặc dù tôi chưa thử điều này, nhưng tôi không thấy lý do cho việc này không hoạt động, thêm các góc tròn vào scrollview, thông qua thuộc tính scrollview.layer.cornerRadius nên làm điều này dễ dàng cho bạn. Ngoài ra nếu bạn có kế hoạch sửa đổi một scrollView, bạn nên phân lớp scrollview và phương pháp drawRect của nó, thay vì một UIView – Lefteris