2011-06-06 39 views
26

我想在界面生成器中繪製一個簡單的插入線來分隔列表中的一些項目,並使界面更整潔一些。我在對象庫中看不到任何「行」或類似的對象,並且似乎無法在「界面」構建器中找到任何繪圖命令。如何在Xcode 4中的界面生成器中繪製線條

回答

60

我用一個非常窄的UIView與backgroundColor設置爲適當的顏色。

+0

這是否違反了Apple的任何指導原則?使用此解決方法讓您的應用通過Apple的審批流程完成? – Kongress 2011-06-06 18:50:26

+0

不,這不違反任何指南,我的應用程序已被批准。 – 2011-06-07 16:04:52

+0

不是理想的,但它的工作原理。謝謝。 – Kongress 2011-06-07 16:09:41

7

iPhone UI庫中沒有行。 Max OS X上的這個功能是由NSBox提供的,但是在iPhone上沒有相應的UI元素。

+0

不夠公平。任何想法的解決方法? – Kongress 2011-06-06 17:36:14

0

我使用了一個視圖並使其變窄了&更改了顏色使其看起來像一條線。但我的問題是我在垂直滾動視圖上使用該行,並且行也滾動。

1

代替視圖,爲什麼不使用標籤並設置適當的背景顏色?

+0

UILabel從UIView繼承。所以你基本上做同樣的事情。另外,由於一行中沒有文本,因此不需要UILabel帶來的附加功能。 – 2013-03-19 19:39:02

7

如果您擔心UIView可能會影響性能,您可以使用CoreGraphics的CAShapeLayers在代碼中繪製一條線。

每個UIView都有一個CALayer,所以畫出線條並將其添加到視圖CALayer中。

(確保Quartz框架添加到您的項目)

UIBezierPath *linePath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0,self.view.frame.size.width, 1)]; 

//shape layer for the line 
CAShapeLayer *line = [CAShapeLayer layer]; 
line.path = [linePath CGPath]; 
line.fillColor = [[UIColor blackColor] CGColor]; 
line.frame = CGRectMake(xPosition, yPosition, self.view.frame.size.width,1); 

[self.view.layer addSublayer:line]; 
0

Interface Builder中不允許你畫所必需的陰影: 您可以在自定義的UIView的drawRect或在您的視圖控制器做到這一點爲插入線。如果你使用Photoshop,你知道這一點。

如果該行在白色/米色背景前面,以下代碼將繪製一個「插圖」。

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 1.0f)]; 
line.backgroundColor = [UIColor colorWithRed:(200.0f/255.0f) green:(200.0f/255.0f) blue:(200.0f/255.0f) alpha:1.0f]; 
line.layer.shadowColor = [UIColor darkGrayColor].CGColor; 
line.layer.shadowOffset = CGSizeMake(0.0f, 1.0f); 
line.layer.shadowRadius = 0.5f; 
line.layer.shadowOpacity = 0.4f; 
line.layer.masksToBounds =NO; 
[Background addSubview:line]; 

記得導入< QuartzCore/QuartzCore.h>。

0

作爲一個可選項 - 在界面生成器中,添加一個視圖,誰的高度設置爲2點。將IBOutlet連接到該視圖並設置其圖層邊框顏色和寬度:

self.mySeparatorLine.layer.borderWidth = 1.0f; self.mySeparatorLine.layer.borderColor = [UIColor lightGrayColor] .CGColor;

相關問題