3

我想调整UISwitch附加在UITableView. 我在谷歌上找到了一些帮助,并成功使用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;
    }

请检查我做错的地方,如果我的程序不正确,请您建议我一些更好的方法来做到这一点。这对我来说会很棒。提前致谢。

4

3 回答 3

5

尝试这个

 UISwitch *mySwitch = [UISwitch new];
mySwitch.transform = CGAffineTransformMakeScale(0.75, 0.75);
于 2013-03-04T07:33:30.840 回答
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 在转换时确实会调整其内在内容大小,我使用它来设置容器视图的框架。

于 2014-10-13T16:59:05.370 回答
0

我建议尝试我编写的这个库。我有一个自述文件,可以很容易地弄清楚如何使用。SwiftySwitch它允许您将开关设置为您想要的任何大小。即使您不想使用该库,您也可以看到我是如何制作自定义开关的。

于 2017-01-06T02:55:18.980 回答