字体非常小,有些人难以阅读,所以我想让它更接近下面按钮上使用的字体大小。
答案 0 :(得分:16)
您可以在show方法之后更改font属性(如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];
答案 1 :(得分:2)
就像Nimrod所说,你不能用本机方法做到这一点。您可以检查UIActionSheet子视图,找到好的子视图并更改其属性。
<强> BUT 强>
<强> SO 强>
你真的不应该改变使用的字体大小..如果这个UIActionSheet标题很重要,你应该找到另一种方式向用户显示...
答案 2 :(得分:2)
@ user651909的答案对我很有用,虽然只是为了增加一些细节:
创建initWithTitle:@" "
时,我必须UIActionSheet
(请注意非空字符串),以便视图在顶部有一些空格可供开头的任何文本使用。然后,在执行[popupQuery showInView:self.view];
之后,我添加了他的建议,以便初始化oldFrame。最后,我补充道:
[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];
没有违反Apple不使用任何内部API的政策,对吗?
答案 3 :(得分:2)
来自UIActionSheet Class Reference:
UIActionSheet不是为子类设计的,也不应该在其层次结构中添加视图。如果您需要提供比UIActionSheet API提供的更多自定义的工作表,您可以创建自己的工作表并使用
presentViewController:animated:completion:
以模态方式呈现它。
答案 4 :(得分:1)
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];
}
答案 5 :(得分:0)
嗯,有办法做到这一点 - 我在github上创建了一个名为LTActionSheet
的UIActionSheet子类正如其他人提到的,如果您使用它可能会发生各种可怕的事情(我还没有发货代码......但是:-))如果您在被接受的应用程序中使用它,请让我们都知道!
答案 6 :(得分:0)
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];
答案 7 :(得分:0)
正如conecon所展示的那样,你可以得到一个指针并操纵它。如果我理解你正在尝试做的是:
[sheet showInView:[self.view window]];
UILabel *title = [[sheet subviews] objectAtIndex:0];
title.font = [UIFont boldSystemFontOfSize:20];
title.textAlignment = UITextAlignmentCenter;
希望这有帮助!