क्या कोई मुझे बता सकता है कि मैं फ़ॉन्ट प्रकार और आकार कैसे बदल सकता हूं UISegmentedControl
?
क्या कोई मुझे बता सकता है कि मैं फ़ॉन्ट प्रकार और आकार कैसे बदल सकता हूं UISegmentedControl
?
जवाबों:
मैं उसी मुद्दे में भाग गया। यह कोड संपूर्ण खंड नियंत्रण के लिए फ़ॉन्ट आकार सेट करता है। फ़ॉन्ट प्रकार सेट करने के लिए कुछ इसी तरह काम हो सकता है। ध्यान दें कि यह केवल iOS5 + के लिए उपलब्ध है
ओबज सी :
UIFont *font = [UIFont boldSystemFontOfSize:12.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font
forKey:NSFontAttributeName];
[segmentedControl setTitleTextAttributes:attributes
forState:UIControlStateNormal];
संपादित करें: UITextAttributeFont
हटा दिया गया है - NSFontAttributeName
इसके बजाय उपयोग करें ।
EDIT # 2: स्विफ्ट 4 NSFontAttributeName
के लिए बदल दिया गया है NSAttributedStringKey.font
।
स्विफ्ट 5 :
let font = UIFont.systemFont(ofSize: 16)
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: font], for: .normal)
स्विफ्ट 4 :
let font = UIFont.systemFont(ofSize: 16)
segmentedControl.setTitleTextAttributes([NSAttributedStringKey.font: font],
for: .normal)
स्विफ्ट 3 :
let font = UIFont.systemFont(ofSize: 16)
segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],
for: .normal)
स्विफ्ट 2.2 :
let font = UIFont.systemFontOfSize(16)
segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],
forState: UIControlState.Normal)
@ ऑड्रे-गोर्डीव से स्विफ्ट कार्यान्वयन के लिए धन्यवाद
[mySegmentedControl setTintColor:onColor forTag:kTagOnState];
और तत्कालीन कलर्स को [mySegmentedControl setTintColor:offColor forTag:kTagOffState];
लागू किया है [mySegmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal];
तो मैं अभी दूर चला जाऊंगा।
NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldsystemFontOfSize:12.0f]};
boldSystemFontOfSize:
(राजधानी प्रणाली के लिए रों)
IOS 5.0+ में Appearance API का उपयोग करें:
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"STHeitiSC-Medium" size:13.0], UITextAttributeFont, nil] forState:UIControlStateNormal];
http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5
UITextAttributeFont
के NSFontAttributeName
बजाय उपयोग - मूल्यह्रास किया गया है ।
UISegmentedControl
।
यहाँ स्वीकृत उत्तर का एक स्विफ्ट संस्करण है:
स्विफ्ट 3 :
let font = UIFont.systemFont(ofSize: 16)
segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],
for: .normal)
स्विफ्ट 2.2 :
let font = UIFont.systemFontOfSize(16)
segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],
forState: UIControlState.Normal)
एक अन्य विकल्प नियंत्रण में परिवर्तन लागू करना है। हालांकि, यह नियंत्रण सीमाओं सहित सब कुछ को माप देगा।
segmentedControl.transform = CGAffineTransformMakeScale(.6f, .6f);
स्विफ्ट शैली:
UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFontOfSize(14.0)], forKeys: [NSFontAttributeName]), forState: UIControlState.Normal)
[NSFontAttributeName: font]
यहाँ मैंने iOS8 के लिए अपडेट किया है
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"STHeitiSC-Medium" size:13.0], NSFontAttributeName, nil] forState:UIControlStateNormal];
XCode 8.1, स्विफ्ट 3
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFont(ofSize: 24.0)],
forKeys: [NSFontAttributeName as NSCopying]) as? [AnyHashable : Any],
for: UIControlState.normal)
}
}
बस संख्या मान बदलें (ofSize: 24.0)
// Set font-size and font-femily the way you want
UIFont *objFont = [UIFont fontWithName:@"DroidSans" size:18.0f];
// Add font object to Dictionary
NSDictionary *dictAttributes = [NSDictionary dictionaryWithObject:objFont forKey:NSFontAttributeName];
// Set dictionary to the titleTextAttributes
[yourSegment setTitleTextAttributes:dictAttributes forState:UIControlStateNormal];
यदि आपके पास कोई प्रश्न है, तो मुझसे संपर्क करें।
nil
मान लौटाता है ।
स्विफ्ट 4
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.setTitleTextAttributes([NSFontAttributeName: font], for: .normal)
Instance member 'setTitleTextAttributes' cannot be used on type 'UISegmentedControl'; did you mean to use a value of this type instead?
iOS13 / स्विफ्ट 5
डैनियल ने मुझे सही तरीका बताया। मैंने इसे इस तरह इस्तेमाल किया-
float scaleFactor = 0.8f;
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]
initWithFrame:CGRectMake(10, 70, 300/scaleFactor,35)];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:0 animated:NO];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:1 animated:NO];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:2 animated:NO];
segmentedControl.transform = CGAffineTransformMakeScale(scaleFactor, 1);
CGPoint segmentedControlCenter = segmentedControl.center;
segmentedControlCenter.x = self.center.x;
segmentedControl.center = segmentedControlCenter;
UISegmentedControl
फ़ॉन्ट आकार सेट करने के लिए एक्सटेंशन ।
extension UISegmentedControl {
@available(iOS 8.2, *)
func setFontSize(fontSize: CGFloat) {
let normalTextAttributes: [NSObject : AnyObject]!
if #available(iOS 9.0, *) {
normalTextAttributes = [
NSFontAttributeName: UIFont.monospacedDigitSystemFontOfSize(fontSize, weight: UIFontWeightRegular)
]
} else {
normalTextAttributes = [
NSFontAttributeName: UIFont.systemFontOfSize(fontSize, weight: UIFontWeightRegular)
]
}
self.setTitleTextAttributes(normalTextAttributes, forState: .Normal)
}
}
UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFont(ofSize: 16.0)],
forKeys: [kCTFontAttributeName as! NSCopying]) as? [AnyHashable : Any],
for: UIControlState.normal)
में swift 5
,
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedString.Key.font: font], for: .normal)
आप UISelectedolontrol के साथ शुरू होने वाले प्रत्येक दृश्य की पुनरावर्ती जांच करके UILabel के लिए वास्तविक फ़ॉन्ट पर प्राप्त कर सकते हैं। मुझे नहीं पता कि यह ऐसा करने का सबसे अच्छा तरीका है, लेकिन यह काम करता है।
@interface tmpSegmentedControlTextViewController : UIViewController {
}
@property (nonatomic, assign) IBOutlet UISegmentedControl * theControl;
@end
@implementation tmpSegmentedControlTextViewController
@synthesize theControl; // UISegmentedControl
- (void)viewDidLoad {
[self printControl:[self theControl]];
[super viewDidLoad];
}
- (void) printControl:(UIView *) view {
NSArray * views = [view subviews];
NSInteger idx,idxMax;
for (idx = 0, idxMax = views.count; idx < idxMax; idx++) {
UIView * thisView = [views objectAtIndex:idx];
UILabel * tmpLabel = (UILabel *) thisView;
if ([tmpLabel respondsToSelector:@selector(text)]) {
NSLog(@"TEXT for view %d: %@",idx,tmpLabel.text);
[tmpLabel setTextColor:[UIColor blackColor]];
}
if (thisView.subviews.count) {
NSLog(@"View has subviews");
[self printControl:thisView];
}
}
}
@end
ऊपर दिए गए कोड में मैं सिर्फ यूआईबेल का टेक्स्ट कलर सेट कर रहा हूं, लेकिन आप फ़ॉन्ट प्रॉपर्टी को हड़प सकते हैं या सेट कर सकते हैं।
यह mysegmentedcontrol के स्थान पर अपने खंडित नियंत्रण नाम जोड़ने के उद्देश्य से है
UIFont *font = [UIFont systemFontOfSize:11.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font
forKey:UITextAttributeFont];
[mySegmentedcontrol setTitleTextAttributes:attributes forState:UIControlStateNormal];
आशा करता हूँ की ये काम करेगा