Robel Tech πŸš€

How to set cornerRadius for only top-left and top-right corner of a UIView

February 20, 2025

How to set cornerRadius for only top-left and top-right corner of a UIView

Rounding corners is a communal styling method successful iOS improvement, including a polished expression to UI components. Piece mounting a single area radius is easy, attaining rounded corners for circumstantial corners of a UIView, similar conscionable the apical-near and apical-correct, requires a spot much finesse. This station dives heavy into assorted strategies to accomplish this consequence, exploring the nuances of all attack and offering applicable examples you tin instrumentality straight into your initiatives. We’ll screen every little thing from utilizing the bed.maskedCorners place (for iOS eleven and future) to crafting customized UIBezierPath options for older iOS variations.

The Contemporary Attack: CACornerMask

Beginning with iOS eleven, Pome launched CACornerMask, importantly simplifying the procedure of rounding circumstantial corners. This place, accessible done the position’s bed, permits exact power complete which corners have the radius. This attack is present the modular pattern and is extremely beneficial for its simplicity and ratio.

Present’s however you instrumentality it successful Swift:

myView.bed.cornerRadius = 10 myView.bed.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] myView.clipsToBounds = actual 

The .layerMinXMinYCorner and .layerMaxXMinYCorner choices particularly mark the apical-near and apical-correct corners, respectively. Retrieve to fit clipsToBounds to actual to guarantee the contented inside the position respects the rounded corners.

Pre-iOS eleven Options: UIBezierPath

For tasks supporting older iOS variations, UIBezierPath affords a almighty, albeit much analyzable, resolution. This includes creating a way that defines the form of the position with the desired rounded corners and past utilizing a CAShapeLayer arsenic a disguise.

Present’s an illustration successful Swift:

fto way = UIBezierPath(roundedRect: myView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 10, tallness: 10)) fto maskLayer = CAShapeLayer() maskLayer.way = way.cgPath myView.bed.disguise = maskLayer 

This codification creates a way with rounded apical-near and apical-correct corners, past applies it arsenic a disguise to the position’s bed.

Customized UIView Delay

For cleaner codification and reusability, see creating a UIView delay. This permits you to easy use the rounded corners to immoderate position passim your task.

delay UIView { func roundCorners(corners: UIRectCorner, radius: CGFloat) { // ... (Insert applicable codification from former sections primarily based connected iOS interpretation) } } 

Present, you tin call myView.roundCorners(corners: [.topLeft, .topRight], radius: 10) straight connected immoderate UIView case.

Show Concerns

Piece some CACornerMask and UIBezierPath accomplish the desired consequence, CACornerMask is mostly much performant, particularly for analyzable views. Offloading the area rounding to the bed avoids pointless redrawing and leverages hardware acceleration. This is important for sustaining creaseless UI interactions, peculiarly successful purposes with predominant position updates oregon animations.

  • Usage CACornerMask for iOS eleven and future.
  • Employment UIBezierPath for backwards compatibility with older iOS variations.

Present’s a measure-by-measure usher for implementing the CACornerMask attack:

  1. Choice the UIView you privation to modify.
  2. Entree its bed place.
  3. Fit the cornerRadius to your desired radius.
  4. Fit the maskedCorners place to the due area values.
  5. Guarantee clipsToBounds is fit to actual.

In accordance to Pome’s documentation, utilizing bed properties for styling is mostly much businesslike than manipulating the position straight. [Pome Documentation - CALayer]

For additional speechmaking connected UIBezierPath, cheque retired this fantabulous assets: UIBezierPath Tutorial

[Infographic Placeholder: Illustrating the quality betwixt utilizing CACornerMask and UIBezierPath]

  • Prioritize person education by making certain creaseless UI interactions.
  • Take the due methodology based mostly connected your task’s iOS interpretation compatibility necessities.

By knowing these methods, you tin refine your UI and present a much polished person education. Whether or not you’re running connected a fresh task oregon updating an present 1, these strategies springiness you the instruments to exactly power area rounding, enhancing the ocular entreaty of your exertion. For a deeper knowing of UI and UX rules, sojourn Nielsen Norman Radical. For precocious iOS improvement methods, research objc.io.

This attack is extremely effectual for creating visually interesting UI parts. See utilizing these strategies successful your adjacent task to accomplish a much polished and nonrecreational expression. Research our another assets connected precocious UI styling to additional heighten your app’s plan.

FAQ

Q: What if I demand to activity iOS variations older than eleven?

A: Usage the UIBezierPath methodology outlined supra. Piece somewhat much analyzable, it gives the essential flexibility for backwards compatibility.

Implementing rounded corners efficaciously enhances the ocular entreaty of your app. Take the methodology champion suited for your task’s necessities and bask the refined aesthetic. Fit to return your UI/UX to the adjacent flat? Research our precocious tutorials and sources to larn much astir creating beautiful and intuitive interfaces.

Question & Answer :
Is location a manner to fit cornerRadius for lone apical-near and apical-correct area of a UIView?

I tried the pursuing, however it extremity ahead not seeing the position anymore.

UIView *position = [[UIView alloc] initWithFrame:framework]; CALayer *bed = [CALayer bed]; UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:framework byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight) cornerRadii:CGSizeMake(three.zero, three.zero)]; bed.shadowPath = shadowPath.CGPath; position.bed.disguise = bed; 

I americium not certain wherefore your resolution did not activity however the pursuing codification is running for maine. Make a bezier disguise and use it to your position. Successful my codification beneath I was rounding the bottommost corners of the _backgroundView with a radius of three pixels. same is a customized UITableViewCell:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:same.backgroundImageView.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(20, 20) ]; CAShapeLayer *maskLayer = [CAShapeLayer bed]; maskLayer.framework = same.bounds; maskLayer.way = maskPath.CGPath; same.backgroundImageView.bed.disguise = maskLayer; 

Swift 2.zero interpretation with any enhancements:

fto way = UIBezierPath(roundedRect:viewToRound.bounds, byRoundingCorners:[.TopRight, .BottomLeft], cornerRadii: CGSizeMake(20, 20)) fto maskLayer = CAShapeLayer() maskLayer.way = way.CGPath viewToRound.bed.disguise = maskLayer 

Swift three.zero interpretation:

fto way = UIBezierPath(roundedRect:viewToRound.bounds, byRoundingCorners:[.topRight, .bottomLeft], cornerRadii: CGSize(width: 20, tallness: 20)) fto maskLayer = CAShapeLayer() maskLayer.way = way.cgPath viewToRound.bed.disguise = maskLayer 

Swift delay present