2010-02-03 49 views
24

Tôi đang cố gắng loại bỏ đường viền xung quanh đồ thị cốt lõi trên iPhone - nhưng dường như đang vật lộn với những gì nên đơn giản trong tâm trí của tôi.Làm thế nào để loại bỏ đường viền xung quanh đồ thị cốt lõi

Con trỏ vui lòng!

+0

Tôi xin lỗi nếu điều này là một câu hỏi hiển nhiên, nhưng một âm mưu đồ thị lõi là gì? –

+0

Cốt lõi là một thư viện để vẽ đồ thị trên máy mac và trên iphone: http://code.google.com/p/core-plot/ – Grouchal

+1

Điều đó có vẻ thực sự hữu ích. Cảm ơn bạn. –

Trả lời

78

Bạn sẽ có thể để nil ra borderLineStyle trên plotArea của đồ thị để loại bỏ các biên giới:

graph.plotAreaFrame.borderLineStyle = nil; // don't draw a border 

Bạn cũng có thể tạo ra chủ đề của riêng bạn, sử dụng những người thân trong khuôn khổ làm ví dụ, và chỉ đơn giản là không được thiết lập borderLineStyle trong đó.

+27

Nếu bạn đang sử dụng chủ đề tích hợp, hãy đảm bảo bạn đặt borderLineStyle SAU cuộc gọi applyTheme hoặc nó sẽ bị ghi đè. –

+2

Nhận xét này là vàng! Cảm ơn! Tôi đã có một số testcode và chỉ cần chuyển đổi các chủ đề thông qua một nút. Vì vậy, tất cả mọi thứ đã bị ghi đè! –

+0

Chỉ để thêm vào câu trả lời của Brad. Vui lòng thêm dòng được đề cập trong câu trả lời sau khi áp dụng chủ đề. Nếu bạn thêm nó trước đó thì nó sẽ không hoạt động. –

4

OK Tôi đã tìm hiểu cách thực hiện - thực sự khá đơn giản!

CPLineStyle *borderLineStyle = [CPLineStyle lineStyle]; 
borderLineStyle.lineColor = [CPColor whiteColor]; 
borderLineStyle.lineWidth = 1.0; 

graph.plotArea.borderLineStyle = borderLineStyle; 

nơi đồ thị là đối tượng đồ thị của bạn - là lý do tôi đã có một biên giới ở nơi đầu tiên là vì tôi sử dụng CPPlainWhiteTheme.

Hy vọng điều này sẽ giúp người khác - có cách nào tốt hơn không?

1

Bạn có thể đặt bất kỳ kiểu đường nào thành nil. Điều này sẽ gây ra các dòng không được rút ra ở tất cả.

1

Trong CorePlot 1.0, cấu trúc của CPTGraph đã thay đổi đôi chút. Các mã để loại bỏ các đường biên giới của một đồ thị, giả định rằng là loại GPTGraph hoặc một lớp con của CPTGraph, là

graph.plotAreaFrame.borderLineStyle = nil; 
8

Không ai trong số các câu trả lời làm việc cho tôi. Này đã làm các công việc:

graph.paddingLeft = 0; 
graph.paddingRight = 0; 
graph.paddingTop = 0; 
graph.paddingBottom = 0; 
graph.plotAreaFrame.borderWidth = 0; 
graph.plotAreaFrame.cornerRadius = 0; 
1

Cách đúng với borderLineStyle = nil sau applyTheme:

CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:hostView.bounds]; 

// Set padding for plot area 
[graph applyTheme:[CPTTheme themeNamed:kCPTPlainWhiteTheme]]; 
graph.plotAreaFrame.borderLineStyle = nil; 
1

Nếu, như tôi, bạn đang tìm kiếm để không chỉ loại bỏ các đường biên giới, nhưng để thực hiện một âm mưu chiếm toàn bộ chế độ xem lưu trữ, số answer từ Thomas Johannesmeyer giúp tôi đi đúng hướng.

Dưới đây là những gì tôi đã làm:

CPTGraphHostingView* hostingView = [[CPTGraphHostingView alloc] initWithFrame: frame]; 
CGRect bounds = hostingView.bounds; 

CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:bounds]; 
hostingView.hostedGraph  = graph; 

graph.paddingTop = CPTFloat(0.0); 
graph.paddingRight = CPTFloat(0.0); 
graph.paddingBottom = CPTFloat(0.0); 
graph.paddingLeft = CPTFloat(0.0); 

graph.plotAreaFrame.paddingTop = CPTFloat(0.0); 
graph.plotAreaFrame.paddingRight = CPTFloat(0.0); 
graph.plotAreaFrame.paddingBottom = CPTFloat(0.0); 
graph.plotAreaFrame.paddingLeft = CPTFloat(0.0); 
graph.plotAreaFrame.masksToBorder = NO; 

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; 
CPTXYAxis *x   = axisSet.xAxis; 
x.labelingPolicy  = CPTAxisLabelingPolicyNone; 
x.title = nil; 
CPTXYAxis *y   = axisSet.yAxis; 
y.labelingPolicy  = CPTAxisLabelingPolicyNone; 
y.title = nil; 
Các vấn đề liên quan