0

I'm developing an iOS application with latest SDK.

I have this custom UIView:

#define ANNOTATION_WIDTH 250
#define ANNOTATION_HEIGHT 200

@implementation CustomView

- (id)initwithTitle:(NSString* )title subTitle:(NSString* )subTitle
{
    CGRect annotationFrame =
    CGRectMake(10, 10, ANNOTATION_WIDTH, ANNOTATION_HEIGHT);

    if ([self initWithFrame:annotationFrame])
    {
        self.backgroundColor = [UIColor redColor];
        self.opaque = YES;
        /*
        UILabel* nameLabel =
        [[UILabel alloc] initWithFrame:CGRectMake(0, 0, ANNOTATION_WIDTH, 20.0)];

        nameLabel.backgroundColor = [UIColor whiteColor];
        nameLabel.textAlignment = NSTextAlignmentCenter;
        //nameLabel.text = coordinate.name;
        nameLabel.text = title;
        [nameLabel sizeToFit];
        [nameLabel setFrame: CGRectMake(0,
                                        0,
                                        nameLabel.bounds.size.width + 8.0,
                                        nameLabel.bounds.size.height + 8.0)];
        [self addSubview:nameLabel];

        UILabel* placeLabel =
        [[UILabel alloc] initWithFrame:CGRectMake(25, 0, ANNOTATION_WIDTH, 20.0)];

        placeLabel.backgroundColor = [UIColor whiteColor];
        placeLabel.textAlignment = NSTextAlignmentCenter;
        //placeLabel.text = coordinate.place;
        placeLabel.text = subTitle;
        [placeLabel sizeToFit];
        [placeLabel setFrame:CGRectMake(25,
                                        0,
                                        placeLabel.bounds.size.width + 8.0,
                                        placeLabel.bounds.size.height + 8.0)];
        [self addSubview:placeLabel];
        */
    }

    return self;
}

I will show a title and a subTitle, but now that code is comment because I'm testing something.

To add this custom view to an UIViewController I do this:

#import "ViewController.h"
#import "CustomView.h"
#import <QuartzCore/QuartzCore.h>

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    CustomView* cView = [[CustomView alloc] initwithTitle:@"Titulo" subTitle:@"Subtitulo"];
    cView.layer.cornerRadius = 10;
    cView.layer.masksToBounds = YES;

    [self.view addSubview:cView];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

If I don't show title and subTitle and I don't see my customView, but I show title and subTitle I only see rounded upper left corner.

I have tried this also, and it doesn't work:

CustomView* cView = [[CustomView alloc] initwithTitle:@"Titulo" subTitle:@"Subtitulo"];
cView.layer.cornerRadius = 10;
cView.clipsToBounds = YES;

Is there any way to show a UIView with rounded corners without adding any subview?

I don't know what it is happening and Id on't know why I get rounded upper left corner only.

VansFannel
  • 45,055
  • 107
  • 359
  • 626

2 Answers2

0

are you tried this

[self.layer setCornerRadius:10];
[self.layer setMasksToBounds:YES];
Mohammad Rabi
  • 1,412
  • 2
  • 21
  • 41
0

Try this:

cView.layer.cornerRadius = 10.0f;
cView.layer.masksToBounds = YES;
cView.layer.opaque = NO;
[self.view addSubview:cView];
Paresh Navadiya
  • 38,095
  • 11
  • 81
  • 132