В моем браузере есть подкатегория, в которой есть UIActivityView и UILabel, говорящие "Signing In...". В этом подзоне есть углы, которые не закруглены. Как я могу сделать их круглыми?
Есть ли способ сделать это внутри моего xib?
В моем браузере есть подкатегория, в которой есть UIActivityView и UILabel, говорящие "Signing In...". В этом подзоне есть углы, которые не закруглены. Как я могу сделать их круглыми?
Есть ли способ сделать это внутри моего xib?
Попробуйте это
#import <QuartzCore/QuartzCore.h> // not necessary for 10 years now  :)
...
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
Примечание. Если вы пытаетесь применить закругленные углы к представлению UIViewController, его не следует применять в конструкторе контроллера вида, а скорее в -viewDidLoad, после того, как view фактически создается экземпляр.
Вы также можете использовать функцию  Определяемые пользователем атрибуты Runtime Attributes конструктора интерфейса, чтобы задать путь ключа layer.cornerRadius к значению. Убедитесь, что вы включили библиотеку QuartzCore.
Этот трюк также работает для установки layer.borderWidth, но он не будет работать для layer.borderColor, так как это ожидает CGColor не a UIColor.
Вы не сможете увидеть эффекты в раскадровке, потому что эти параметры оцениваются во время выполнения.
 
Теперь вы можете использовать быструю категорию в UIView (код ниже рисунка) с помощью @IBInspectable, чтобы показать результат на раскадровке (если вы используете категорию, используйте только cornerRadius, а не layer.cornerRadius в качестве ключевого пути.
extension UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }
}
 
Короткий ответ:
myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true  // optional
Если вы пришли к этому ответу, вы, вероятно, уже видели достаточно, чтобы решить свою проблему. Я добавляю этот ответ, чтобы дать немного более наглядное объяснение, почему все делает то, что они делают.
Если вы начинаете с обычного UIView, он имеет квадратные углы.
let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)
Вы можете отдать его круглым углам, изменив свойство cornerRadius вида layer.
blueView.layer.cornerRadius = 8
Значения большего радиуса дают более закругленные углы
blueView.layer.cornerRadius = 25
и меньшие значения дают меньше закругленных углов.
blueView.layer.cornerRadius = 3
Этого может быть достаточно, чтобы решить вашу проблему прямо там. Однако иногда представление может иметь subview или подуровень, выходящий за пределы представления. Например, если бы я должен был добавить sub view, как этот
let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)
или если бы я добавил дополнительный слой, как этот
let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)
Тогда я бы закончил с
Теперь, если мне не нужны вещи, висящие за пределами границ, я могу сделать это
blueView.clipsToBounds = true
или
blueView.layer.masksToBounds = true
который дает этот результат:
Оба clipsToBounds и masksToBounds эквивалентны . Просто первый используется с UIView, а второй - с CALayer.
Другой подход, чем тот, который сделал Эд Марти:
#import <QuartzCore/QuartzCore.h>
[v.layer setCornerRadius:25.0f];
[v.layer setMasksToBounds:YES];
Вам нужно, чтобы setMasksToBounds загружал все объекты из IB... у меня возникла проблема, когда мой взгляд округлился, но у меня не было объектов из IB:/
это исправлено. = D надеюсь, что это поможет!
Как описано в этом сообщении в блоге, вот способ округления углов UIView:
+(void)roundView:(UIView *)view onCorner:(UIRectCorner)rectCorner radius:(float)radius
{
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                                   byRoundingCorners:rectCorner
                                                         cornerRadii:CGSizeMake(radius, radius)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    [view.layer setMask:maskLayer];
    [maskLayer release];
}
Прохладная часть об этом заключается в том, что вы можете выбрать, какие углы вы хотите округлить.
Вам нужно сначала импортировать файл заголовка <QuartzCore/QuartzCore.h>
 #import QuartzCore/QuartzCore.h>
[yourView.layer setCornerRadius:8.0f];
yourView.layer.borderColor = [UIColor redColor].CGColor;
yourView.layer.borderWidth = 2.0f;
[yourView.layer setMasksToBounds:YES];
Не пропустите использование - setMasksToBounds, иначе эффект может не отображаться.
 Вы можете использовать следующий пользовательский класс UIView который также может изменять цвет и ширину границы. Так как это IBDesignalbe Вы также можете изменить атрибуты в конструкторе интерфейса.
import UIKit
@IBDesignable public class RoundedView: UIView {
    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }
    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
}
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 200, 200)];
view.layer.backgroundColor = [UIColor whiteColor].CGColor;
view.layer.cornerRadius = 20.0;
view.layer.frame = CGRectInset(v.layer.frame, 20, 20);
view.layer.shadowOffset = CGSizeMake(1, 0);
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 5;
view.layer.shadowOpacity = .25;
[self.view addSubview:view];
[view release];
   @IBDesignable
    class DesignableView: UIView {
    }
    extension UIView
    {
        @IBInspectable
        var cornerRadius: CGFloat {
            get {
                return layer.cornerRadius
            }
            set {
            layer.cornerRadius = newValue
        }
    }
}
view.layer.cornerRadius = 25
view.layer.masksToBounds = true
Пожалуйста, импортируйте Quartzcore framework, тогда вы должны установить setMaskToBounds в TRUE эту очень важную строку.
Затем: [[yourView layer] setCornerRadius:5.0f];
UIView* viewWithRoundedCornersSize(float cornerRadius,UIView * original)
{
    // Create a white border with defined width
    original.layer.borderColor = [UIColor yellowColor].CGColor;
    original.layer.borderWidth = 1.5;
    // Set image corner radius
    original.layer.cornerRadius =cornerRadius;
    // To enable corners to be "clipped"
    [original setClipsToBounds:YES];
    return original;
}
Сделайте это программно в obj c
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50,    200, 200)];
view.layer.backgroundColor = [UIColor whiteColor].CGColor;
view.layer.cornerRadius = 20.0;
view.layer.frame = CGRectInset(v.layer.frame, 20, 20);
[view.layer.shadowOffset = CGSizeMake(1, 0);
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 5;
view.layer.shadowOpacity = .25;][1]
[self.view addSubview:view];
Мы также можем сделать это из таблицы.
 layer.cornerRadius  Number  5
если круглый угол не работает в viewDidload(), лучше написать код в viewDidLayoutSubview()
-(void)viewDidLayoutSubviews
{
    viewTextfield.layer.cornerRadius = 10.0 ;                                               
    viewTextfield.layer.borderWidth = 1.0f;
    viewTextfield.layer.masksToBounds =  YES;
    viewTextfield.layer.shadowRadius = 5;
    viewTextfield.layer.shadowOpacity = 0.3;
    viewTextfield.clipsToBounds = NO;
    viewTextfield.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
}
Надеюсь это поможет!
Вы также можете использовать изображение:
UIImage *maskingImage = [UIImage imageNamed:@"bannerBarBottomMask.png"];
CALayer *maskingLayer = [CALayer layer];
maskingLayer.frame = CGRectMake(-(self.yourView.frame.size.width - self.yourView.frame.size.width) / 2
                                , 0
                                , maskingImage.size.width
                                , maskingImage.size.height);
[maskingLayer setContents:(id)[maskingImage CGImage]];
[self.yourView.layer setMask:maskingLayer];
set cornerRadious Свойство для круглого просмотра
set masksToBounds Логическое значение для изображения еще не будет выводиться за пределы радиуса угла
view.layer.cornerRadius = 5;
view.layer.masksToBounds = YES;
Использование расширения UIView:
extension UIView {    
func addRoundedCornerToView(targetView : UIView?)
{
    //UIView Corner Radius
    targetView!.layer.cornerRadius = 5.0;
    targetView!.layer.masksToBounds = true
    //UIView Set up boarder
    targetView!.layer.borderColor = UIColor.yellowColor().CGColor;
    targetView!.layer.borderWidth = 3.0;
    //UIView Drop shadow
    targetView!.layer.shadowColor = UIColor.darkGrayColor().CGColor;
    targetView!.layer.shadowOffset = CGSizeMake(2.0, 2.0)
    targetView!.layer.shadowOpacity = 1.0
}
}
Использование:
override func viewWillAppear(animated: Bool) {
sampleView.addRoundedCornerToView(statusBarView)
}
В Swift 4.2 и Xcode 10.1
let myView = UIView()
myView.frame = CGRect(x: 200, y: 200, width: 200, height: 200)
myView.myViewCorners()
//myView.myViewCorners(width: myView.frame.width)//Pass View width
view.addSubview(myView)
extension UIView {
    //If you want only round corners
    func myViewCorners() {
        layer.cornerRadius = 10
        layer.borderWidth = 1.0
        layer.borderColor = UIColor.red.cgColor
        layer.masksToBounds = true
    }
    //If you want complete round shape, enable above comment line
    func myViewCorners(width:CGFloat) {
        layer.cornerRadius = width/2
        layer.borderWidth = 1.0
        layer.borderColor = UIColor.red.cgColor
        layer.masksToBounds = true
    }
}
В SwiftUI вы можете использовать модификатор cornerRadius непосредственно на любом View, который вы хотите.
Например, этот вопрос:
Text("Signing In…")
    .padding(16)
    .background(Color.red)
    .cornerRadius(50)
Обратите внимание, что больше нет ромбовидного радиуса, поэтому, даже если вы установите значение углаRadius больше половины высоты, оно будет плавно округляться.
ВКЛ Xcode 6 Ваша попытка
     self.layer.layer.cornerRadius = 5.0f;
или
    self.layer.layer.cornerRadius = 5.0f;
    self.layer.clipsToBounds = YES;