2012-04-30 34 views
8

Tôi xin lỗi vì một loạt câu hỏi ở đây. Tôi bắt đầu chơi với Quartz Graphics ngày càng nhiều và thấy rằng nó có hiệu ứng thú vị, nhưng tôi không có nhiều mẫu để xem chúng hoạt động.iPhone iOS cách tạo hiệu ứng đồ họa như đổ bóng, v.v ...? Hiệu ứng nào được tích hợp sẵn trong iOS?

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath; 

Có một tài sản shadow:

view.layer.shadowColor = [UIColor grayColor].CGColor; 
view.layer.shadowOffset = CGSizeMake(5, 5); 
view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath; 
view.layer.shadowRadius = 9; 

tôi đã không thể làm cho các chương trình bóng mặc dù.

Borders:

view.layer.borderWidth = 1; 
    view.layer.borderColor=[[UIColor whiteColor] CGColor]; 

gì các hiệu ứng khác tôi có thể nhận được từ tích hợp trong iOS trên iPhone? * Có một dự án demo toàn diện có thể giới thiệu chức năng thao tác đồ họa nào được tích hợp trong iOS không? *

Làm cách nào để làm mặt nạ trong suốt?

Có cách nào để thêm bóng bên trong hoặc ánh sáng bên trong không? Có cách nào để làm cho nút iOS xuất hiện nhiều hơn "lõm" hơn thực sự không?

Có cách nào để làm gradient theo hướng xuyên tâm không? Có cách nào để tạo hiệu ứng ống kính đa tia sáng như Adobe Illustrator không? Có cách nào để pha trộn các lớp bằng cách sử dụng "làm sáng, hòa tan" hoặc các hiệu ứng photoshop khác không? Có cách nào để tự động điều chỉnh độ sáng của hình ảnh không? Tôi biết cách thay đổi màu sắc.

tôi sẽ đánh giá cao bất kỳ gợi ý khác về những loại hiệu ứng lớp tôi có thể áp dụng đối với các CALayers

+3

Tôi sẽ trả lời câu hỏi đầu tiên của bạn: Bạn cần đặt view.layer.maskToBounds = NO; để hiển thị bóng – Lefteris

+0

Cảm ơn! Tôi đang sử dụng mặt nạ để giới hạn để hiển thị các góc tròn. Điều này làm cho tôi tin rằng góc tròn và bóng tối không tương thích, trừ khi tôi tạo ra quan điểm của tôi từ hai quan điểm và bằng cách nào đó thao tác đường dẫn –

Trả lời

12

Thật là một sự trùng hợp thú vị! Tôi vừa mới tổ chức một buổi thuyết trình tại Hội thảo thiết kế trò chơi iOS trên CoreGraphics và CoreAnimation và hôm nay tôi đã xuất bản một số tài liệu trên Github.

Vì vậy, nếu bạn thích một số tay trên ví dụ bạn có thể kiểm tra các kho lưu trữ ở đây: https://github.com/pkluz/PKCoreTechniques

Bao gồm một số ví dụ sau:

  • Màu Điền

  • Fill Gradient (Linear và Radial)

  • Đường dẫn đơn giản

  • Bezier Curves

  • Clipping (Standard and Thậm chí-Odd)

  • Tạo Buttons tùy chỉnh kéo

  • Simple Dịch

  • Dịch với Hit-Test Triggers

  • Một 'CoverFlow' rất nguyên thủy với Chuyển đổi 3D trong CoreAnimation .

.. và một số chi tiết ;-)

Hy vọng bạn tìm thấy những gì bạn cần, nhưng từ những gì tôi nhìn thấy nó nên bao gồm một số tiền hợp lý của những gì bạn đã yêu cầu.

Lưu ý: Ngoài ra còn có một PDF phục vụ như một hướng dẫn tương tác.

+0

Đây là một điều tuyệt vời. Tôi thấy rằng các đường dẫn chim giận dữ được mã hóa cứng. Bạn có nhập chúng vào hoặc sử dụng một số công cụ tạo mã không? Bạn có biết liệu có thể lấy điểm cho đường dẫn này từ trình chỉnh sửa đồ họa, như trình minh họa adobe không? –

2

Đây là một thực sự tốt tutorial, nó đã giúp tôi rất nhiều, có lẽ nó sẽ giúp bạn quá.

+0

Cảm ơn một ví dụ tuyệt vời, đây là những gì tôi đang tìm kiếm! –

+1

@Templar, liên kết đã cho của bạn hiện đã được đăng. – Tirth

+0

@iAmbitious Vâng, có vẻ như trang không còn khả dụng nữa. [This] (http://d3signerd.com/old/deep-dive-into-calayer-shadows/) là một phiên bản giống như được lưu trong bộ nhớ cache, nhưng hình ảnh bị thiếu: ( – Templar

1

Đây là triển khai của tôi về một thế hệ gradient xuyên tâm sử dụng CIImage. Nó hiển thị hình ảnh được đặt tên nếu một gradient không được tạo ra. Nếu không nó sẽ hiển thị một gradient xuyên tâm.

+(UIImage*)doRadialGradientFilter:(NSString*)baseImageName 
{ 

    CIFilter* controlsFilter = [CIFilter filterWithName: @"CIRadialGradient" keysAndValues: 
        @"inputColor1", [CIColor colorWithRed:0.0 green:0.0 
                blue:0.0 alpha:0.0], @"inputColor0", [CIColor colorWithRed:0.0 green:0.0 
                              blue:0.5 alpha:0.5], @"inputRadius0", [NSNumber numberWithDouble:0.0], nil]; 


    CIImage *displayImage = controlsFilter.outputImage; 
    UIImage *finalImage = [UIImage imageWithCIImage:displayImage]; 

    CIContext *context = [CIContext contextWithOptions:nil]; 
    if (displayImage == nil || finalImage == nil) { 
     // We did not get output image. Let's display the original image itself. 
     return [UIImage imageNamed:baseImageName]; 
    }else { 
     // We got output image. Display it. 
     return [UIImage imageWithCGImage:[context createCGImage:displayImage fromRect:displayImage.extent]]; 
    } 

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