如何调整UISwitch按钮的大小?

时间:2013-03-04 07:26:56

标签: iphone ios xcode uitableview 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;
    }

请检查我在哪里做错了,如果我的程序不对,那么请你建议我做一些更好的方法。这对我来说很棒。提前谢谢。

3 个答案:

答案 0 :(得分:5)

试试这个

 UISwitch *mySwitch = [UISwitch new];
mySwitch.transform = CGAffineTransformMakeScale(0.75, 0.75);

答案 1 :(得分:2)

在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在转换时会调整其内在内容大小,并使用它来设置容器视图的框架。

答案 2 :(得分:0)

我建议尝试我写的这个库。我有一个自述文件,可以很容易地弄清楚如何使用。 SwiftySwitch它允许您切换任意大小。即使您不想使用该库,您也可以看到我如何制作自定义切换器。