自动调整UIView的圆角

Nat*_*ika 5 autosize uiview ios

是否可以使圆角(topLeft和topRight)自动调整uiview?这是我的代码:

SFDetailViewController.h

@interface SFDetailViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, PopoverViewListDelegate>
{
  ...

  UIView *header;
}
@property (nonatomic, retain) IBOutlet UIView *header;

@end
Run Code Online (Sandbox Code Playgroud)

SFDetailViewController.m

#import "SFDetailViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface SFDetailViewController ()
@end


@implementation SFDetailViewController
@syntesyze header;

-(void) viewDidLoad
{
    ....
    [self setCornerRadiusToHeader:header];
 }



-(void) setCornerRadiusToHeader:(UIView *)headerView
{    
    CGRect bounds = headerView.layer.bounds;
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds 
                                               byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
                                                     cornerRadii:CGSizeMake(8.0, 8.0)];

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = bounds;
    maskLayer.path = maskPath.CGPath;

    [headerView.layer addSublayer:maskLayer];
    headerView.layer.mask = maskLayer; 

}
Run Code Online (Sandbox Code Playgroud)

该观点在IB中定义为:

IB

我得到的 - topRight角是直的,因为视图的大小是动态的.

结果

jbr*_*nan 2

您需要将您的财产设置UIViewcontentMode类似的内容UIViewContentModeRedrew。内容模式控制视图的内容在其边界更改时(例如自动调整大小时)如何更改。默认情况下,它只是拉伸视图的内容,这就是你的角被拉伸的原因。