Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS - Create UIView subclass for rounded rectangle

I'm trying to create & use a very simple UIView subclass for a rectangle with rounded corners. I've created a new class as follows :

RoundedRect.h

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface RoundedRect : UIView
@end

RoundedRect.m

#import "RoundedRect.h"

@implementation RoundedRect

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [[self layer] setCornerRadius:10.0f];
        [[self layer] setMasksToBounds:YES];
    }
    return self;
}
@end

I'm using iOS 5.1 with storyboards and have set the custom class property in the IB inspector window to 'RoundedRect', but when I run the app the rectangle still has square corners. Have I missed something obvious?

Thanks Jonathan

like image 851
Jonathan Wareham Avatar asked Apr 17 '12 11:04

Jonathan Wareham


1 Answers

In iOS 5 and up, there is absolutely no need to subclass - you can do it all from Interface Builder.

  1. Select the UIView you want to modify.
  2. Go to the Identity Inspector.
  3. In "User Defined & Runtime Attributes", add "layer.cornerRadius" in Key Path, Type should be "Number" and whatever setting you require.
  4. Also add 'layer.masksToBounds' as Boolean.
  5. Done! With no subclassing, and all in IB.
like image 113
Andres Kievsky Avatar answered Oct 20 '22 00:10

Andres Kievsky