Как изменить размер кнопки UIswitch?

Я хочу изменить размер кнопки UISwitch, прикрепленной к UITableView. Я нашел некоторую помощь в Google и сделал это успешно, используя CGAffineTransformMakeScale, но с этим у меня возникает проблема, когда я меняю положение этой кнопки переключения, она имеет свой исходный размер, возможно, из-за того, что она находится в табличном представлении, но я изменяю ее размер в делегате ViewDidLoad. Вот что я делаю.

- (void)viewDidLoad{
 switchFB = [[UISwitch alloc] initWithFrame:CGRectMake(227, 8, 79, 27)];
switchFB.transform= CGAffineTransformMakeScale(0.7, 0.7);}

и в ячейке для строки по пути индекса

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{`static NSString *CellIdentifier = @"SettingsCell";`

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.backgroundColor = [UIColor clearColor];
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    }

Пожалуйста, проверьте это, где я делаю неправильно, и если моя процедура неверна, не могли бы вы предложить мне лучший способ сделать это. Это будет здорово для меня. Заранее спасибо.


person josh    schedule 04.03.2013    source источник


Ответы (3)


Попробуй это

 UISwitch *mySwitch = [UISwitch new];
mySwitch.transform = CGAffineTransformMakeScale(0.75, 0.75);
person Minakshi    schedule 04.03.2013
comment
Вы внимательно прочитали мой вопрос, приятель, я делаю то же самое, что вы предлагаете. - person josh; 04.03.2013
comment
Да, вам нужно изменить 0,75 в соответствии с вашими потребностями. Вот что у меня сработало mySwitch.transform = CGAffineTransformMakeScale(1.25, 1.1); У меня была та же проблема, которую я решил с помощью вышеуказанного решения. - person Minakshi; 04.03.2013
comment
Я также делаю то же самое при просмотре метода загрузки, как я уже упоминал. switchFB.transform= CGAffineTransformMakeScale(0.7, 0.7);} это также изменение размера кнопки переключения. - person josh; 04.03.2013
comment
да, я пробовал, и он работает нормально, но круглый угол переключателя был срезан, и внешний вид переключателя разрушен. Любое предложение для этого. - person Hindu; 15.05.2013

В iOS 8 я успешно изменил размер UISwitches, используя собственное представление контейнера. Код выглядит примерно так:

@interface MyContainerView : UIView 

@end

@implementation MyContainerView

- (void)layoutSubviews
{
    [super layoutSubviews];

    // Center my subviews so the transform views properly
    CGPoint c = CGPointCenterOfRect(self.bounds);
    for (UIView * v in self.subviews)
    {
        v.center = c;
    }

}
@end


UISwitch  * switchFB = [[UISwitch alloc] initWithFrame:CGRectZero];
switchFB.transform= CGAffineTransformMakeScale(0.7, 0.7);

CGSize s = switchFB.intrinsicContentSize;
CGRect r = CGRectMake(0,0,s.width, s.height);
MyContainerView * v = [[MyContainerView alloc] initWithFrame:r];

[v addSubview:switchFB];

Назначение представления контейнера двоякое: - У вас есть дескриптор чего-то, что может правильно автоматически компоноваться - Вы можете подклассифицировать layoutSubviews и центрировать свой элемент управления преобразованием автоматически после того, как встроенный автоматический макет попытался сделать это.

Обратите внимание, что UISwitch регулирует собственный размер содержимого при преобразовании, и я использую это для установки рамки представления контейнера.

person henryaz    schedule 13.10.2014

Я бы порекомендовал попробовать эту библиотеку, которую я написал. У меня есть ридми для этого, чтобы было легко понять, как его использовать. SwiftySwitch позволяет сделать переключатель любого размера. Даже если вы не хотите использовать библиотеку, вы могли увидеть, как я сделал Custom Switch.

person Sethmr    schedule 06.01.2017