字体很小,很难阅读,所以我想让它更接近它下面的按钮上使用的字体大小。有没有办法在UIActionSheet中更改标题字体大小?
回答
就像Nimrod说你不能用本地方法做到这一点。您可以检查UIActionSheet子视图,找到好的并更改它的属性。
但
- 此实现可能会在 崩溃即将成为iOS的更新
- 苹果可能会拒绝你的应用程序
- UIActionSheet是 iPhone GUI的本土元素,用户用它熟悉
SO
你真的应该不改变使用的字体大小。如果这UIActionSheet标题是很重要的,你应该找到另一种方式展示给用户...
后,可以更改字体属性show方法(如showFromBarButtonItem)如下。
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
UILabel *newTitle = [[[UILabel alloc] initWithFrame:oldFrame] autorelease];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"My Title";
[sheet addSubview:newTitle];
[sheet release];
嗯,是有办法做到这一点 - 我创建了一个名为LTActionSheet
正如其他人所提到的,如果你使用它的各种可怕的事情可能发生github上一个UIActionSheet子类(我有没有运输代码...尚未:-))如果您在一个被接受的应用程序中使用它,请让我们都知道!
@ user651909的回答伟大工程,对我来说,虽然只是增加了几个细节:
我不得不initWithTitle:@" "
(注意非空字符串)创建UIActionSheet
时,这样的观点已经在上面的一些空间为任何文字开头。然后,在做了[popupQuery showInView:self.view];
后,我添加了他的建议,以便旧的框架将被初始化。最后,我说:
[newTitle sizeToFit];
newTitle.frame = CGRectMake(oldFrame.origin.x,
oldFrame.origin.y,
oldFrame.size.width,
newTitle.frame.size.height);
这是必要的,因为oldFrame
的身高对我的更大的字体(大小20)过小,导致一些字母即可在底部裁剪。此外,即使进行了这种调整,如果文本太大,比如说大于boldSystemFontOfSize:26,文本将运行得太近或进入下面的按钮。由于按钮似乎锚定在顶部,因此调整表单框架的大小并不会有帮助。
大概做
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
不违反苹果的不使用任何内部API的政策,对不对?
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@"SpecifySearch"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"UncategorizedContacts" , nil];
//as.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
[as showFromTabBar:self.tabBarController.tabBar];
if(as.subviews.count > 0
&& [[as.subviews objectAtIndex:0] isKindOfClass:[UILabel class]]){
UILabel* l = (UILabel*) [as.subviews objectAtIndex:0];
[l setFont:[UIFont boldSystemFontOfSize:20]];
}
[as release];
就像conecon所示,你可以得到一个指向它的指针并操作它。如果我理解正确,你要做的是:
[sheet showInView:[self.view window]];
UILabel *title = [[sheet subviews] objectAtIndex:0];
title.font = [UIFont boldSystemFontOfSize:20];
title.textAlignment = UITextAlignmentCenter;
希望这有助于!
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Share" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Facebook", @"Twitter",nil];
[sheet showInView:self.view];
if (![[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
CGRect labelFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
[[[sheet subviews] objectAtIndex:0] removeFromSuperview];
UILabel *newTitle = [[UILabel alloc] initWithFrame:labelFrame];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"Share";
[sheet addSubview:newTitle];
}
从UIActionSheet Class Reference:
UIActionSheet的目的不是要被继承,也不应该你加意见,其层次结构。如果您需要提供比UIActionSheet API提供更多定制的工作表,您可以创建自己的模型并以
presentViewController:animated:completion:
的模式呈现。
- 1. 更改UIActionSheet标题字符串的字体类型和大小
- 2. 有没有办法改变MFMailCompose中的字体大小?
- 3. 有没有办法在Winform/C中更改ListView的项目字体大小#
- 4. c3js:有没有办法改变字体大小?
- 5. 有没有办法在Reportlab中设置字体大小?
- 6. 有没有办法改变JOptionPane.showMessageDialog字体?
- 7. 有没有办法在Webkit浏览器中覆盖最小字体大小?
- 8. 有没有办法在.NET 2.0中ftp变更时更改传输大小?
- 9. 有没有办法使用UImanager更改Jradiobuttons的字体颜色
- 10. 有没有办法在webKit的contentEditable div中增加字体大小?
- 11. 有没有办法在Cimg中改变文本的字体?
- 12. 有没有办法改变JasperReports图表中的形状大小?
- 13. 字体大小更改后,QTextEdit中的ZoomIn没有影响
- 14. 更改Cocos2d-x中现有标签的字体大小
- 15. 在Reveal JS R Markdown中更改标题字体大小
- 16. 在散景中更改滑块标题的字体大小
- 17. 有没有办法让JavaScript在变焦时改变文字大小?
- 18. 有没有办法改变Silverlight 3中OpenFileDialog的标题?
- 19. 有没有办法改变Heroku JVM堆大小?
- 20. 有没有办法在运行时更改控制台图标
- 21. 有没有办法在运行时更改android主题?
- 22. 如何粗体和更改图表的字体大小标题
- 23. 更改表格标签字体大小
- 24. 更改phpmailer主题的字体大小
- 25. 更改JTextArea字体大小的问题
- 26. 有没有办法安排html更改?
- 27. 有没有办法倾听Animatable.isRunning更改?
- 28. 有没有办法让Perl标量不区分大小写?
- 29. TCPDF:更改标题中的字体大小
- 30. 如何更改iPhone中的标题字体大小?
有可能没有支持的方式来做到这一点。您可能会以某种方式获得对操作表视图的引用,然后遍历它以找到标题UILabel并直接编辑该视图,但如果操作表的操作系统实现发生更改,则未来可能会中断该视图。 – Nimrod 2010-10-13 00:04:08