Как я могу очистить этот код Objective C cornerRadius? - PullRequest
0 голосов
/ 13 декабря 2018

Я делаю одно и то же несколько раз для разных кнопок.Это мой текущий код, как я могу очистить его, чтобы применить тот же стиль за один раз?

Спасибо!

appExclusivesButton.layer.cornerRadius = 10;
appExclusivesButton.clipsToBounds = YES;

emailDealButton.layer.cornerRadius = 10;
emailDealButton.clipsToBounds = YES;

dotwButton.layer.cornerRadius = 10;
dotwButton.clipsToBounds = YES;

exclusiveButtonl.layer.cornerRadius = 10;
exclusiveButtonl.clipsToBounds = YES;

clearanceButton.layer.cornerRadius = 10;
clearanceButton.clipsToBounds = YES;


harlowButton.layer.cornerRadius = 10;
harlowButton.clipsToBounds = YES;
walthamstowButton.layer.cornerRadius = 10;
walthamstowButton.clipsToBounds = YES;
leytonButton.layer.cornerRadius = 10;
leytonButton.clipsToBounds = YES;
loughtonButton.layer.cornerRadius = 10;
loughtonButton.clipsToBounds = YES;

Ответы [ 5 ]

0 голосов
/ 14 декабря 2018

Мне нравится ответ Райнера (я тоже иногда так делаю).Но зацикливание элементов управления может быть грязным, особенно когда кнопки расположены в нескольких окнах.Я предполагаю, что способ рефакторинга состоит в том, чтобы создать метод, который будет выполнять 2 действия одновременно, и снабдить кнопку методом следующим образом:

-(void)stylizeButton:(UIButton*)btn {
  btn.layer.cornerRadius = 10.0f;
  btn.clipsToBounds = YES;
}

Затем

[self stylizeButton:appExclusivesButton];
[self stylizeButton:emailDealButton];
[self stylizeButton:dotwButton];
[self stylizeButton:exclusiveButtonl];
[self stylizeButton:clearanceButton];
[self stylizeButton:harlowButton];
[self stylizeButton:walthamstowButton];
[self stylizeButton:leytonButton];
[self stylizeButton:loughtonButton];

Еще немногоповторяющиеся, но более организованные.

В качестве альтернативы вы можете рассмотреть возможность создания собственной кнопки, которую можно добавлять и стилизовать в раскадровке.Учебник здесь: https://www.sitepoint.com/creating-custom-ui-components-live-rendering-xcode/

0 голосов
/ 13 декабря 2018

Просто создайте подкласс UIButton, поместите туда свой код стиля, например

self.layer.cornerRadius = 10;

, а затем создайте свой собственный класс UIButton.

0 голосов
/ 13 декабря 2018

Простой способ применить cornerRadius и clipsToBounds ко всем кнопкам - создать массив, в который вы поместите все свои кнопки.Затем выполните цикл по кнопкам в вашем массиве и примените значения для нужных свойств.

Пример использования:

for (UIButton *button in buttonArray) {
    button.layer.cornerRadius = 10;
    button.clipsToBounds = YES:
}

Вы можете объединить этот подход с ответом Sanjukta и напишите метод, который устанавливает cornerRadius и clipsToBounds (или любое другое свойство) для ваших кнопок.

0 голосов
/ 13 декабря 2018

Я бы создал категорию UIButton, которая позволит вам установить радиус угла.Вы можете создать фабричный метод, который возвращает новую кнопку с закругленными углами, или метод, который применяет закругленные углы к существующей кнопке.

Вот пример, который делает оба:

//  UIButton+RoundedCorners.h
@interface UIButton (RoundedCorners)

+(instancetype)buttonWithRoundedCorners;
-(void)addRoundedCorners;

@end


//  UIButton+RoundedCorners.m
@implementation UIButton (RoundedCorners)

+(instancetype)buttonWithRoundedCorners {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.layer.cornerRadius = 10;
    button.clipsToBounds = YES;
    return button;
}


-(void)addRoundedCorners {
    self.layer.cornerRadius = 10;
    self.clipsToBounds = YES;
}

@end

Тогдаесли вы импортируете категорию, вы можете использовать ее следующим образом:

 UIButton *myButton = [UIButton buttonWithRoundedCorners];

или

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton addRoundedCorners];
0 голосов
/ 13 декабря 2018

Используя класс категории uibutton.Просто сделайте класс категории uibutton, добавьте ваш метод, чтобы добавить радиус, и все хотите добавить на кнопку.И просто импортируйте этот класс в свой класс и вызовите метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...