我想调整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;
}
请检查我在哪里做错了,如果我的程序不对,那么请你建议我做一些更好的方法。这对我来说很棒。提前谢谢。
答案 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它允许您切换任意大小。即使您不想使用该库,您也可以看到我如何制作自定义切换器。