Objective c Can';t更改UISearchbar的大小';s文本字段

Objective c Can';t更改UISearchbar的大小';s文本字段,objective-c,ios,uitextfield,uisearchbar,Objective C,Ios,Uitextfield,Uisearchbar,我在InterfaceBuilder和IBOutlet中创建了一个名为userSearchBar的UISearchBar。现在,我想在代码中更改它的宽度和高度,但我不能这样做。这是我的密码: for (UIView * const subview in userSearchBar.subviews) { if ([subview isKindOfClass: NSClassFromString(@"UISearchBarBackground")]) { [sub

我在
InterfaceBuilder
IBOutlet
中创建了一个名为
userSearchBar的
UISearchBar
。现在,我想在代码中更改它的宽度和高度,但我不能这样做。这是我的密码:

    for (UIView * const subview in userSearchBar.subviews) {

    if ([subview isKindOfClass: NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
    }

    if ([subview isKindOfClass: [UITextField class]]) {

        UITextField * const textField = (UITextField *)subview;

        textField.textColor = [UIColor redColor];
        textField.text = @"Enter text";
        textField.frame = CGRectMake(0, 0, 250, 50);
    }
}

所有其他更改(文本、颜色、删除栏)都能很好地工作,但不能更改大小。

我自己也遇到过这样的问题,我发现最好的解决方法是从头开始编写自己的搜索栏,将
UIView
子类化。这让我可以合法地访问我可能想要定制的所有属性(例如,考虑设计或品牌时的背景、颜色),而不是像这样尝试破解。这是未来的证明,不是那么难,也不是非常耗时。这是一个有趣的练习,将提供您想要的内容。

我自己也遇到过同样的问题,我发现最好的解决方法是从头开始编写自己的搜索栏,对
UIView
进行子类化。这让我可以合法地访问我可能想要定制的所有属性(例如,考虑设计或品牌时的背景、颜色),而不是像这样尝试破解。这是未来的证明,不是那么难,也不是非常耗时。这是一个有趣的练习,将提供您想要的内容。

在更改
UITextField
的框架后(假设
搜索栏
是您的
UISearchBar
),您是否尝试过类似
[searchBar sizeToFit]
[searchBar setNeedsDisplay]
?试试看,如果那没用,我们会想出其他办法;)祝你好运在更改
UITextField
的框架后(假设
searchBar
是您的
UISearchBar
),您是否尝试过类似
[searchBar sizeToFit]
[searchBar setNeedsDisplay]
?试试看,如果那没用,我们会想出其他办法;)祝你好运