Is there a way to set the sides of the border of a UIView to one color and leave the top and the bottom another?
Nope—CALayer borders don’t support that behavior. The easiest way to accomplish what you want is adding an n-point-wide opaque subview with your desired border color as its background color on each side of your view.
CGSize mainViewSize = theView.bounds.size; CGFloat borderWidth = 2; UIColor *borderColor = [UIColor redColor]; UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, borderWidth, mainViewSize.height)]; UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(mainViewSize.width - borderWidth, 0, borderWidth, mainViewSize.height)]; leftView.opaque = YES; rightView.opaque = YES; leftView.backgroundColor = borderColor; rightView.backgroundColor = borderColor; // for bonus points, set the views' autoresizing mask so they'll stay with the edges: leftView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin; rightView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin; [theView addSubview:leftView]; [theView addSubview:rightView]; [leftView release]; [rightView release];
Note that this won’t quite match the behavior of CALayer borders—the left and right border views will always be inside the boundaries of their superview.